powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вызов хранимой функции MSSQL
25 сообщений из 27, страница 1 из 2
Вызов хранимой функции MSSQL
    #35132133
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то ни разу не требывалось, а тут вдруг понадобилось вызвать хранимую функцию MSSQL с параметром, ну и соответственно получить ее Return.
Как эт из скрипта то сделать?
Спасибо.
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132145
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MS SQL нет такого объекта хранимая функция. Просто функция - есть. Вызвать например так:
Код: plaintext
select top  1  dbo.MyFunc(:myparam) into :myreturn from sysobjects
Вместо sysobjects пойдет любая таблица котороая заведомо есть в базе данных.
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132158
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, просто функция.
А как быть если у юзера вапще нет прав ни на какие таблицы? from из чего тогда можно сделать?
права есть тока на выполнение процедур и функций.
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132268
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanoRА как быть если у юзера вапще нет прав ни на какие таблицы? from из чего тогда можно сделать?
права есть тока на выполнение процедур и функций.
Проще всего - сделать ему таблицу, вставить туда одну запись и дать права на эту таблицу. Вариант посложее:
Код: plaintext
1.
2.
3.
long l
execute immediate "create table #t(id int)";
execute immediate "insert into #t(id)values (1)";
select top  1  dbo.myfunc() into :l from #t;
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132457
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dynamic SQL (Format 3)
Dynamic SQL Format 3 is used to execute a SQL statement that has a result set and a fixed number of arguments that are known at compile time.

Код: plaintext
1.
2.
3.
4.
5.
6.
ls_sql = "SELECT dbo.myfunc()"
DECLARE aa_cur DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :ls_sql USING SQLCA;
OPEN DYNAMIC aa_cur;
FETCH aa_cur INTO :ll_result;
CLOSE aa_cur ;
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132607
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейDynamic SQL (Format 3)
Dynamic SQL Format 3 is used to execute a SQL statement that has a result set and a fixed number of arguments that are known at compile time.
Вариант с одной постоянной табличкой выглядит предпочтительнее...
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132609
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк wrote:

> Вместо sysobjects пойдет любая таблица котороая заведомо есть в базе данных.

А в MSSQL нет аналога sys.dummy из ASA?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132686
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanoR - в аську глянь
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132701
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000А в MSSQL нет аналога sys.dummy из ASA?
Нет
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132739
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что через RPCFUNC нельзя?
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132743
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк wrote:

> Нет

Обидно :(... А select без from у него тоже не бывает?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132775
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
Dim2000 Обидно :(... А select без from у него тоже не бывает?
точно уже не помню ...., но по-моему, бывает ...
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132797
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
А из билдера вызывали что бы он не ругался на select без from , насколько я помню так :
select ...... from ( select 1 ) t
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132800
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОбидно :(... А select без from у него тоже не бывает?
Бывает, но накой синтаксис PB не схавает.
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132804
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+/-А из билдера вызывали что бы он не ругался на select без from , насколько я помню так :
select ...... from ( select 1 ) t
так
Код: plaintext
select  1 
тоже должен быть с from
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35132972
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
VanoR так

select 1

тоже должен быть с from

нет. попробуйте вот так :

string ls_
select 1 into :ls_ from ( select 1 ) t(a);

должно работать.
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35133296
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+/- VanoR так

select 1

тоже должен быть с from

нет. попробуйте вот так :

string ls_
select 1 into :ls_ from ( select 1 ) t(a);

должно работать.
надо же!! работает :)
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35147446
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А родственный вопрос можно?

Можно построить DataWindow на табличной функции(функция возвращает resultset)? У меня не получилось, может что то не знаю? Есть тонкости?
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35147471
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelBuilderМожно построить DataWindow на табличной функции(функция возвращает resultset)? У меня не получилось, может что то не знаю? Есть тонкости?
Да вроде нет проблем
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35147488
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то типа такого
Код: plaintext
1.
select mov.ves
From dbo.myfunc (null, '19000101',:end_date) mov
где
Код: plaintext
1.
2.
3.
4.
CREATE FUNCTION dbo.uf_myfunc (@org_id int,
        @begin_date datetime,
        @end_date datetime) 

RETURNS @rez TABLE ( ...
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35147502
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RETURNS в функции не обязательно должен быть TABLE
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35147660
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanoRRETURNS в функции не обязательно должен быть TABLE
А что простите табличная функция еще должна возвращать?
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35147692
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркА что простите табличная функция еще должна возвращать?
ах табличная :)
ну датавинду можно и не на табличной функции построить
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35148426
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркЧто-то типа такого
Код: plaintext
1.
select mov.ves
From dbo.myfunc (null, '19000101',:end_date) mov
где
Код: plaintext
1.
2.
3.
4.
CREATE FUNCTION dbo.uf_myfunc (@org_id int,
        @begin_date datetime,
        @end_date datetime) 

RETURNS @rez TABLE ( ...


Марк, Вы честно пробовали? Дело в том, что например вот так создается (аргумент один group_nb)
Код: plaintext
1.
2.
3.
4.
5.
SELECT	cust_id,
           cust_nm,
           mng_cust_id,
           mng_cust_name_alt
  FROM dbo.tbl_Clients_for_RepPrint( :group_nb, '20070217', '20070218')

А вот так не создается (аргумент group_nb и DateFrom):
Код: plaintext
1.
2.
3.
4.
5.
SELECT	cust_id,
           cust_nm,
           mng_cust_id,
           mng_cust_name_alt
  FROM dbo.tbl_Clients_for_RepPrint( :group_nb, :DateFrom, '20070218')

процедура inline типа, примерно такая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE FUNCTION dbo.tbl_Clients_for_RepPrint(
  @group_nb  SMALLINT,
  @DateFrom  DATETIME,
  @DateTo    DATETIME
)
RETURNS TABLE
AS
RETURN ( SELECT CST.cust_id AS cust_id,
              ....
            )
 

Билдер ругается: Incorrect syntax near '{'

Приходится в серверных скриптах пользоваться как и задумывалось функцией, а на коиенте в Билдере звать поцедурную обвязку вокруг функции (поцедура тупо зовет функцию и всё)
...
Рейтинг: 0 / 0
Вызов хранимой функции MSSQL
    #35148610
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аргумет :DateFrom сделайте типа string
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вызов хранимой функции MSSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]