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

Откуда:
Сообщений: 3689
print @@VERSION 

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (Intel X86) 
	Jun 28 2012 08:42:37 
	Copyright (c) Microsoft Corporation
	Express Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)


use db_new_tmp 
go

create table tblTest1
                     (
                      idkey bigint identity(1,1) not null primary key,
                      fldDate datetime default getdate(),
                      fldfio varchar(255) not null
                     ) 
go

create procedure spInsTest1
                           @fio as varchar(255),
                           @idkey as bigint output
as
insert into tblTest1(fldfio) values(@fio)
select @idkey=@@identity 
go

declare
          @id bigint

exec spInsTest1 @fio='Иванов Иван Иванович',@idkey=@id
print @id

exec spInsTest1 @fio='Петров Петр Петрович',@idkey=@id
print @id


Переменная @id всегда возвращает NULL значение, хотя аргумент @idkey в spInsTest1 помечен как output и при вызове этот аргумент передается переменной @id объявленной в последнем пакете.
Почему так происходит?
3 июл 13, 12:12    [14515609]     Ответить | Цитировать Сообщить модератору
 Re: Почему сохраненная процедура не возвращает значение  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
George-III,

exec spInsTest1 @fio='Иванов Иван Иванович',@idkey=@id output;
3 июл 13, 12:14    [14515626]     Ответить | Цитировать Сообщить модератору
 Re: Почему сохраненная процедура не возвращает значение  [new]
Glory
Member

Откуда:
Сообщений: 104751
George-III
Переменная @id всегда возвращает NULL значение, хотя аргумент @idkey в spInsTest1 помечен как output и при вызове этот аргумент передается переменной @id объявленной в последнем пакете.
Почему так происходит?

Потому что при вызове output параметер тоже надо указавать. Как это предлагается в хелпе
3 июл 13, 12:14    [14515628]     Ответить | Цитировать Сообщить модератору
 Re: Почему сохраненная процедура не возвращает значение  [new]
George-III
Member

Откуда:
Сообщений: 3689
Ennor Tiegael
George-III,

exec spInsTest1 @fio='Иванов Иван Иванович',@idkey=@id output;

Спасибо большое, все понял.
3 июл 13, 12:29    [14515764]     Ответить | Цитировать Сообщить модератору
 Re: Почему сохраненная процедура не возвращает значение  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
для многопользовательских систем, и если на вставляемую таблицу у вас наложен аудит, то лучше используйте
 scope_identity()
4 июл 13, 12:08    [14521280]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить