Как запустить хранимую процедуру функцией SqlExecDirect

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Как запустить хранимую процедуру функцией SqlExecDirect

Сообщение Max_Ural »

Речь о MS SQL
Раньше пользовался следующим
Вызывал функцию SqlExecDirect('Proc1')
При этом на сервере запускалась хранимка с именем. , либо в ms70drv.log писалось сообщение "Не удалось вызвать процедуру с именем" (если ее нет)

Сейчас делаю следующее
SqlExecDirect('GetDBUserName')
- в логе ничего не пишется, ошибка 30006
Когда написал sp_exec GetDBUserName - в логе появилось
22.12.2010 11:34:30 [UTM_20100417#GALAKTIKA]:
sp_exec GetDBUserName

22.12.2010 11:34:30 [UTM_20100417#GALAKTIKA]:
Ошибка(1,9): Синтаксическая ошибка в SQL запросе "G"
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: Как запустить хранимую процедуру функцией SqlExecDirect

Сообщение cruger »

Выдержка из документации:
Коды ошибок обращения к БД
....
tsDirectSQLStoredNotFound
30006
Хранимая процедура не найдена. Приложение пытается выполнить функцией SqlExecDirect запрос, состоящий из вызова хранимой процедуры, которая не была зарегистрирована.
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Re: Как запустить хранимую процедуру функцией SqlExecDirect

Сообщение Max_Ural »

Проблема не в том, что я не знаю кода ошибки 30006.

Вопрос (указанный в теме) скорее в том, как запустить хранимую процедуру, которая находится в базе на SQL server
В базе точно есть хранимая процедура dbo.GetCurrOffice
Пробовал запустить ее следующими командами

dbo.GetCurrOffice
GetCurrOffice
sp_exec dbo.GetCurrOffice
sp_exec GetCurrOffice
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: Как запустить хранимую процедуру функцией SqlExecDirect

Сообщение cruger »

Никак. Через DSQL можно запускать только то, что через DSQL описано.

А зачем вообще для выяснения номера текущего офиса запускать DSQL?
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Re: Как запустить хранимую процедуру функцией SqlExecDirect

Сообщение Max_Ural »

Эту процедуру я пытался запустить просто для примера
Жаль, что работающую недокументированную возможность закрыли

Ладно, у меня она в принципе, маленькая, попробую ее на DSQL генерить и запускать

Спасибо за ответ
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: Как запустить хранимую процедуру функцией SqlExecDirect

Сообщение m0p3e »

Max_Ural писал(а):Эту процедуру я пытался запустить просто для примера
Жаль, что работающую недокументированную возможность закрыли

Ладно, у меня она в принципе, маленькая, попробую ее на DSQL генерить и запускать

Спасибо за ответ
А GetCurrOffice так и не запустится. Будет попытка запустить S$GetCurrOffice.
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: Как запустить хранимую процедуру функцией SqlExecDirect

Сообщение cruger »

Делайте на DSQL процедуру/функцию - заглушку, затем вручную меняйте её код на то, что хочется.
Если на DSQL нельзя нужный код написать.
Ответить