IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Вопрос по синтаксису хранимых процедур sql server. (https://www.imho.ws/showthread.php?t=43876)

strah 20.11.2003 16:50

Вопрос по синтаксису хранимых процедур sql server.
 
Помогите чайнику,пытаюсь разобраться,почему при выполнении:

CREATE PROCEDURE Col_zap @col int out
AS
select @col=count(*) from biblref
GO

выдается ошибка.

А при выполнении
CREATE PROCEDURE Col_zap @col int =0 out
AS
select @col=count(*) from biblref
GO

Значение @col после выполнения всегда равно 0,хотя количество записей в таблице biblref далеко не нулевое.

Кстати никто не подскажет,где в сети найти грамотный материал по этой теме с хорошим количеством примеров?

someone312002 21.11.2003 10:57

Что-то типа этого... за точность не ручаюсь...

create procedure test (@inParam int = 0 OUTPUT)
as
begin
select @inParam = 10
end

declare @vParam int
declare @sendParam int
exec @vParam = test(@sendParam OUTPUT)
print @vParam

strah 21.11.2003 17:59

Еще кто-нибудь подскажет(мне нужна хранимая процедура,при обращении к которой через adostoredproc, будет выдаваться количество записей в таблице)
Или(и) объяснение,почему те что наверху не работают?

someone312002 24.11.2003 10:44

а для этого пользуй @@rowcount после селекта

strah 24.11.2003 13:29

А поподробней,мне там понадобится не общее количество,а выбор по условию(where там еще будет)

someone312002 24.11.2003 18:40

даже если ты сделаешь выборку, используешь как-то эти данные (фильтр и т.п.) - всё равно, колличество обработанных строк будет занесено в переменную @@rowcount.

strah 24.11.2003 18:48

Я видимо не совсем верно задал вопрос.Перефразировка помещена в форум отдельной темой.

aceofext 26.11.2003 18:36

Всё у тебя правильно наверху. Просто при выполнении нужно указать, что параметер, который ты передаёшь - не простой, а OUTPUT (кстати, someone312002 в своем первом примере это указал).
В SQLе так:

delcare @count int
execute Col_zap @col output

в ADO у объекта Parameter есть свойство Direction, которое может принимать несколько значений, среди которых есть adParamInputOutput (=3) и adParamOutput (=2).

В ADO.NET тоже самое есть у объекта SqlParameter.

strah 26.11.2003 18:44

Спасибо большое!!!

aceofext 26.11.2003 18:48

Я так понял, ты с на ADO это делаешь? Если помог, с тебя пятак. :biggrin: Я, понимаешь, пятаки собираю ;)

Добавлено через 1 минуту:
Лана, и четвёрка пойдёт :)

strah 26.11.2003 18:50

Какая четверка сразу пятак и поставил.
Всех проблем не решил,но про parametr очень нужное упоминание:))

aceofext 26.11.2003 18:51

Был рад помочь ;)


Часовой пояс GMT +4, время: 01:21.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.