Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) "Хранимые процедуры" для vfpoledb (число прочтений - 15590 )
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
"Хранимые процедуры" для vfpoledb
04. Июля 2007 :: 12:48
Печать  
В vfpoledb есть возможность создавать подобие хранимых процедур.
Необходимо только создать "PRG"-файл.
Может кто этим занимался - в каком виде должен быть оформлен такой файл и где его необходимо размещать?
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #1 - 04. Июля 2007 :: 12:58
Печать  
Он должен находится в каталоге, который ты прописал в строке подключения.
Вот пример текста ХП (автор - steban):
Код
Выбрать все
FUNCTION quarter
	LPARAMETERS d
	RETURN INT((MONTH(d)-1)/3)+1
endfunc 


А вот тут можешь немножко почитать про это
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #2 - 04. Июля 2007 :: 12:59
Печать  
То есть должна быть одна основная процедура с именем как и файл реализации?
И какие ограничения языка в этих процедурах?

ЗЫ... тогда будем вспоминать фокса.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #3 - 04. Июля 2007 :: 13:03
Печать  
Иди по ссылке. Там почти всё написано.
Цитата:
Процедура может принимать при ее вызове параметры от вызывающей программы. Параметры могут объявляться как частные переменные (ключевое слово PARAMETERS) или как локальные переменные (ключевое слово LPARAMETERS). Как именно объявлять параметры дело Вашего вкуса. Число передаваемых параметров может быть меньше, чем число объявленных параметров. В этом случае "лишние" параметры процедуры инициализируются в значение false (.F.). Пример оформления процедуры:

Procedure MyProc
parameter nScope
? "Число pi="+str(nScope)
return


Соответственно вызов этой процедуры выглядит так:

Do MyProc with 3.14

Программа, дойдя до оператора Do MyProc, произведет поиск файла myproc.prg (или откомпилированного myproc.fxp) и произведет вызов этой процедуры. При вызове переменной-параметру nScope будет передано значение 3.14, и начнет исполняться процедура, пока не будет достигнут конец файла myproc.prg или не будет встречен оператор RETURN. При этом управление будет передано на следующий оператор после Do MyProc.

Наборы процедур можно хранить в одном файле, что дает нам процедурный файл. В этом случае вызов выглядит так:

Do MyProc with 3.14 in MyProcFile,

где MyProcFile имя процедурного файла.
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #4 - 04. Июля 2007 :: 13:06
Печать  
Понятно, а как насчет ограничения языка?
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #5 - 04. Июля 2007 :: 13:14
Печать  
Не знаю, т.к. не было надобности. Но можно ж опытным путём...  Подмигивание
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #6 - 04. Июля 2007 :: 13:17
Печать  
Ладно, буду пробовать
  
Наверх
ICQ  
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #7 - 04. Июля 2007 :: 13:20
Печать  
Не работают команды и функции Фокса связанные с визуализацией. Типа BROWSE, EDIT. Все, что касается работы с данными, а также ввод-вывод в файлы работает. Я лично не понял как получить рекордсет как результат работы функции. Поэтому сохранял в ДБФ и потом открывал запросом.
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #8 - 06. Августа 2007 :: 12:48
Печать  
Еще мысля появилась - в справке написано, что для OleDB можно использовать команду "SET PROCEDURE"
Команда отрабатывает, но в запросе его функции не получается использовать...

Может кто опытом поделится?
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: "Хранимые процедуры" для vfpoledb
Ответ #9 - 06. Августа 2007 :: 14:45
Печать  
Chieftain писал(а) 06. Августа 2007 :: 12:48:
Еще мысля появилась - в справке написано, что для OleDB можно использовать команду "SET PROCEDURE"
Команда отрабатывает, но в запросе его функции не получается использовать...

Может кто опытом поделится?

А что хочется получить?
Рабочий пример :
http://www.1cpp.ru/forum/YaBB.pl?num=1180606447
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #10 - 07. Августа 2007 :: 05:55
Печать  
kiruha писал(а) 06. Августа 2007 :: 14:45:
Chieftain писал(а) 06. Августа 2007 :: 12:48:
Еще мысля появилась - в справке написано, что для OleDB можно использовать команду "SET PROCEDURE"
Команда отрабатывает, но в запросе его функции не получается использовать...

Может кто опытом поделится?

А что хочется получить?
Рабочий пример :
http://www.1cpp.ru/forum/YaBB.pl?num=1180606447


Просто по аналогии с фоксом хотелось получить единый процедурный файл, в котором хранились бы все необходимые функции
  
Наверх
ICQ  
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #11 - 07. Августа 2007 :: 15:00
Печать  
Читай внимательнее справку. Там написано, что эту команду можно использовать внутри хранимых процедур, триггеров, пользовательских функций и т.д. В тексте запроса эта команда не выполняется.
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #12 - 15. Августа 2007 :: 07:41
Печать  
Короче выкрутился как всегда с извратами.
Сделал единый "_getdata.prg" в который первым параметром всегда передаю имя функции для выполнения, а там уже анализирую...

Код
Выбрать все
PARAMETERS Func,Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9,Param10
IF Func="GetSertificate" THEN
	RETURN GetSertificate(Param1,Param2)
ENDIF 



ЗЫ..ну не люблю я большого скопления файлов
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #13 - 15. Августа 2007 :: 08:07
Печать  
А вот так:
Цитата:
Наборы процедур можно хранить в одном файле, что дает нам процедурный файл. В этом случае вызов выглядит так:

Do MyProc with 3.14 in MyProcFile,

где MyProcFile имя процедурного файла.

не пробывал?
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: "Хранимые процедуры" для vfpoledb
Ответ #14 - 15. Августа 2007 :: 08:15
Печать  
JohnyDeath писал(а) 15. Августа 2007 :: 08:07:
А вот так:
Цитата:
Наборы процедур можно хранить в одном файле, что дает нам процедурный файл. В этом случае вызов выглядит так:

Do MyProc with 3.14 in MyProcFile,

где MyProcFile имя процедурного файла.

не пробывал?


В самом фоксе это работает, а в запросе маловероятно...

Сейчас получается вполне красиво

Код
Выбрать все
SELECT
  Спр.ID as [ТекущийЭлемент $Справочник.Номенклатура],
  Спр.CODE as Код,
  Спр.Descr as Наименование,
  _GetData(""GetSertificate"",$Серт.ДатаКонца,:ТекущаяДата~~) as Сертификат 

  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать