Динамический SQL с выходным параметром | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Застрял в довольно банальной вещи.
Раньше довольно много писал динамических запросов на MS SQL server , где часть параметров приходит в процедуру сверху. Потребовалось, чтобы т1 параметр в динамическом запросе был OUTPUT Тут и загводка. Обидно особенно , что если не класть этого в серверную процедуру, то на стороне фокса такое делается мгновенно. Но вроде это не совсем оптимально Вся процедура довольно большая Привожу только проблемную часть ALTER procedure newnum @tbname varchar(30), @flname varchar(30), @wy int , @nnum INT OUTPUT, @lnum int as declare @nm int declare @nm1 int if @wy=0 execute ('select '+@nnum+'=max('+@flname+') from '+@tbname) Говорит ошибка рядом с = Те если просто в query analiser написать declare @tbname char(30) declare @fldname char(30) declare id int exec ('select '+@id+'=max('+@fldname+') from '+@tbname) Тоже говорит ошибка рядом с = Без выходного параметра только с входными @tbname,@fldname все прекрасно работает Пробовал так извращаться declare @tbname char(30) declare @fldname char(30) declare id int exec ('declare idd int select @idd=max('+@fldname+') from '+@tbname) set @id=@idd select @id Ошибки нет, но резульатат nul неверный при конкретных подстановках имен таблиц и полей ------------------ не имей 100 рублей, а имей сто друзей ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
Hel!Riser Сообщений: 10452 Откуда: Нижний Новгород Дата регистрации: 11.03.2001 |
а если
------------------ Осторожно - глисты! ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
PaulWist Сообщений: 14741 Дата регистрации: 01.04.2004 |
Привет, Володь.
Прверил, только что
Вроде результат выдает нормальный ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Проверил, товй приер работает
Попробую сейчас его сунуть в процедура ------------------ не имей 100 рублей, а имей сто друзей ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Нет, Паша
Все не так хорошо, как кажется Выходной параметр не char а целый В этут то перепенную результат динам запроса и не удается присвоить Те проблема прежняя, достать присвоенную переменную наружу ------------------ не имей 100 рублей, а имей сто друзей ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
Владимир Максимов Сообщений: 14146 Откуда: Москва Дата регистрации: 02.09.2000 |
Ребята, вы чего? EXEC() - это отдельный пакет. Т.е. они просто не видит внешних переменных.
Вот здесь пример решения www.sql.ru Там в конце 2 пример по получению выходных значений в динамическом запросе. ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Владимир
Это и не только тут есть, а и в книжках по курсам с SQL server Они все у меня есть Только ни один из описанных примеров там не подходит Бог с ним, будем совать все это со стороны VFP ------------------ не имей 100 рублей, а имей сто друзей ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
Владимир Максимов Сообщений: 14146 Откуда: Москва Дата регистрации: 02.09.2000 |
Ну, хорошо, "тупой" вариант, который я использовал, когда не знал об sp_executesql
Подвариант того же самого
Недостаток второго варианта в том, что в этом случае недопустима рекурсия. Нельзя использовать INSERT во ложенных EXEC() ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
PaulWist Сообщений: 14741 Дата регистрации: 01.04.2004 |
2boba
Совсем забыл про sp_executesql (благо Владимир Максимов напомнил, вот твой пример и что тебя в нем не устраивает
теперь вызывающий пакет имеет значение из вызванного батча. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: Динамический SQL с выходным параметром | |
---|---|
PaulWist Сообщений: 14741 Дата регистрации: 01.04.2004 |
Вот причесанный
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
© 2000-2025 Fox Club  |