Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Вниз
Возварщение параметров хранимой процедуры (MSSQL+DBExpress) Найти похожие ветки
← →
Asker (2003-07-29 13:32) [0]Как получить результат выполнения хранимой процедуры в Deplhi из MSSQL используется DBExpress:
Моя процедура:
CREATE PROCEDURE dbo.nextoperatind
@IND INTEGER OUTPUT
AS
begin tran
SELECT @IND=MAX(operat) from idx WITH (TABLOCKX)
update idx set operat=@IND+1
commit tran
GO
пробовал:
EXECUTE NEXTOPERATIND :@IND OUTPUT;
- в результате получаю 0 вместо занчения
(или DECLARE @IND INTEGER;
EXECUTE NEXTOPERATIND @IND OUTPUT;
SELECT IND = @IND)
EXEC sp_serveroption SRV , "data access", "true";
SELECT * FROM OPENQUERY(SRV,"exec ballon.dbo.nextoperatind ")
- выдает, что нужен мой объявленный параметр @IND
Как можно объявить запрос, чтобы в результате выводился бы выходной параметр из хранимой процедуры?
При использовании TSQLStoredProc, если в ней задать процедуру nextoperatind и ручками прописать параметр (не видит сама она процедур сервера :-( ) то выдаст выход за границы диапазона параметра @IND
← →
KSergey (2003-07-29 13:53) [1]Все делал только на ADO, но подозреваю, что одно и то же.
При использовании TSQLStoredProc, если в ней задать процедуру nextoperatind и ручками прописать параметр (не видит сама она процедур сервера :-( ) то выдаст выход за границы диапазона параметра @IND
Наверное, надо с типом параметра разобраться аккуратнее и не забыть описать, что он выходной из процедуры.
пробовал:
EXECUTE NEXTOPERATIND :@IND OUTPUT;
- в результате получаю 0 вместо занчения
Это я что-то вовсе не понимаю, так только параметры из программы можно впихать
(или DECLARE @IND INTEGER;
EXECUTE NEXTOPERATIND @IND OUTPUT;
SELECT IND = @IND)
А) убрать тчк с зпт совсем
Б) последнюю можно переписать как SELECT @IND, правда тогда имени поля не будет, но можно обратиться по индексу
← →
Asker (2003-07-29 14:10) [2]Параметры на ней прописаны нормально, он же ругается просто при попытке оращения к нулевому параметру.
Да без точек с запятой - это то же самое
А насчет SELECT @IND я не понял: можно в виде примера?
← →
KSergey (2003-07-29 14:25) [3]Asker © (29.07.03 14:10)
Параметры на ней прописаны нормально, он же ругается просто при попытке оращения к нулевому параметру.
Ну если нормально...
Да без точек с запятой - это то же самое
В смысле тоже самое? Хотя я все время путаюсь с этими нюансами именно дельфийского написания SQL текста (не пинать!), но там есть вроде какие-то тонкости.. Знаю только, что я никогда не пишу там тчк с зпт.
Совет: попробуйте все эти скрипты отладить в Query Analizer"е. Там проще найти ошибки, да и дельфи "не будет виновата".
А насчет SELECT @IND я не понял: можно в виде примера?
Мысли в слух.
← →
Asker (2003-07-29 14:39) [4]Да я тоже частенько путаюсь с нюансами написания SQL текста в различных БД... В Query Analizer все прекрасно проходит. Это в дельфи не возвращаестя набор данных, если в одном запросе написано более одного оператора.(хотя сами команды прекрасно выполняются)
← →
KSergey (2003-07-29 14:45) [5]Asker © (29.07.03 14:39)
Это в дельфи не возвращаестя набор данных, если в одном запросе написано более одного оператора.(хотя сами команды прекрасно выполняются)
Наглая ложь ;)
Я так делал, повторять сейчас лень.
К сожалению, проблем в вашем коде не вижу, правда здесь нет куска кода программы: как это все вызывается?
← →
Asker (2003-07-30 06:53) [6]Query.Open;
или StoredProc.ExecProc :-)
Если работать через АДО, то действительно все работает(сам пробовал) - и через запрос и через хранимую процедуру. Глюки начинаются, если работать через DBExpress.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c