Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 возврат значения из функции...  [new]
Spirit
Member

Откуда: Краснодар
Сообщений: 160
SQL 2000.
есть прилинкованный ORACLE сервер, с него надо тащить данные.
Использую
select * from openquery(orclsrv, 'select * from table where field=value')

все нормально. НО!
весь вопрос в том, что значения field и value постоянно меняются, а openquery в качестве параметра не принимает переменных. Попробовал выкрутиться следующим образом - составляю переменную, содержащую весь запрос, а потом ее исполняю EXEC (@string). Работает. Снова НО!
Надо подставлять различные комбинации field и value в одном запросе, попробовал затолкнуть формирование и выполнение строки запроса в функцию и потом просто в запросе вызывать ее с разными параметрами, но!
1. функция не понимает EXEC (@string), только EXEC @string, без скобок, то есть можно выполнить только хранимку.
2. как вернуть из функции результат выполнения EXEC (это всегда поле decimal).
3 июн 03, 14:30    [220156]     Ответить | Цитировать Сообщить модератору
 Re: возврат значения из функции...  [new]
Glory
Member

Откуда:
Сообщений: 104760
1. функция не понимает EXEC (@string), только EXEC @string, без скобок, то есть можно выполнить только хранимку.

Не просто хранимую процедуру, но только extended stored procedure.

2. как вернуть из функции результат выполнения EXEC (это всегда поле decimal).

Почему бы не использовать процедуру вместо функции ?
3 июн 03, 14:43    [220185]     Ответить | Цитировать Сообщить модератору
 Re: возврат значения из функции...  [new]
Spirit
Member

Откуда: Краснодар
Сообщений: 160
Не просто хранимую процедуру, но только extended stored procedure.
и еще системные функции....

надо в итоге получить что-то типа
select a.Field1, test..fnGetValue('param1') as [Value 1], test..fnGetValue('param2') as [Value 2] from table1 a

Получится ли такая конструкция, если пользоваться процедурой?
3 июн 03, 14:51    [220205]     Ответить | Цитировать Сообщить модератору
 Re: возврат значения из функции...  [new]
Glory
Member

Откуда:
Сообщений: 104760
надо в итоге получить что-то типа
Это запрос для использования в openquery() ?
3 июн 03, 15:25    [220292]     Ответить | Цитировать Сообщить модератору
 Re: возврат значения из функции...  [new]
Spirit
Member

Откуда: Краснодар
Сообщений: 160
нет, это конечный запрос.
в openquery будет
select value from allpoints where grp =''' + @grp+''' and TAG=''' + @tag+ '''

вот эти @grp и @tag и меняются для одного запроса. (те самые param1).....
3 июн 03, 15:31    [220298]     Ответить | Цитировать Сообщить модератору
 Re: возврат значения из функции...  [new]
Glory
Member

Откуда:
Сообщений: 104760
declare @Value1 varchar(8000), @Value2 varchar(8000)

exec test..uspGetValue 'param1', @value1 output
exec test..uspGetValue 'param2', @value2 output
3 июн 03, 15:37    [220313]     Ответить | Цитировать Сообщить модератору
 Re: возврат значения из функции...  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
2 Glory
1. функция не понимает EXEC (@string), только EXEC @string, без скобок, то есть можно выполнить только хранимку.

Не просто хранимую процедуру, но только extended stored procedure.


никогда бы не подумал что так просто пишутся extended stored procedure :)

create proc #p as select 'qqq'

go
declare @s varchar(99)
select @s='#p'

exec @s
3 июн 03, 16:36    [220435]     Ответить | Цитировать Сообщить модератору
 Re: возврат значения из функции...  [new]
Glory
Member

Откуда:
Сообщений: 104760
2SergSuper
А теперь тот же самый exec @s, только внутри UDF :)
3 июн 03, 16:42    [220452]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить