простая процедура

Kipetcoff
Дата: 21.01.2009 23:00:26
Я к сожалению не мостак писать процедуры..
Нужно что-то вроде этого


ALTER PROCEDURE [dbo].[sp_GetSupplierId] (
	@SUPNAME nvarchar(50),
    @SUPNUMBER nvarchar(8))
AS
declare @selectedid uniqueidentifier
    begin
	SELECT @selectedid = id
				FROM         StockDB.dbo.Supplier
				WHERE     ( SupplierNum LIKE @SUPNUMBER )
	end
    if (@selectedid = null)
	begin
     INSERT INTO StockDB.dbo.Supplier OUTPUT @selectedid=inserted.id VALUES (newid(),@SUPNAME,@SUPNUMBER)
	end

	return @selectedid


Пишу для ms sql server..основная проблема в том что не могу разобраться с этим OUTPUT @selectedid=inserted.id... в и-нете куча примеров,но все заполняют вывод в таблицу.. Я же уже замучался запихивать результат в переменную.. И не знаю как и где определить что вывод uniqueidentifier.
_djХомяГ
Дата: 21.01.2009 23:49:12
create table #test (id uniqueidentifier)
go
----процедурв
create procedure proc_uniq
@id uniqueidentifier out
as
select @id=NEWID()
insert into #test values(@id)
GO
---вызов процедуры
declare
@uid uniqueidentifier
exec proc_uniq @uid out
select @uid
aleks2
Дата: 22.01.2009 08:00:30
Kipetcoff,

Проще будь
ALTER PROCEDURE [dbo].[sp_GetSupplierId] (
	@SUPNAME nvarchar(50),
    @SUPNUMBER nvarchar(8))
AS
declare @selectedid uniqueidentifier
    begin
	SELECT @selectedid = id
				FROM         StockDB.dbo.Supplier
				WHERE     ( SupplierNum LIKE @SUPNUMBER )
	end
    if (@selectedid = null)
	begin
               set @selectedid=newid()
     INSERT INTO StockDB.dbo.Supplier (@selectedid,@SUPNAME,@SUPNUMBER)
	end

	return @selectedid
ветерочек
Дата: 22.01.2009 08:41:54
?
ALTER PROCEDURE [dbo].[sp_GetSupplierId] (
	@SUPNAME nvarchar(50),
    @SUPNUMBER nvarchar(8),@selectedid  uniqueidentifier =null out )
AS
	SET NOCOUNT ON 

	SELECT top 1 @selectedid = id
				FROM         StockDB.dbo.Supplier
				WHERE     ( SupplierNum LIKE @SUPNUMBER )

    if (@selectedid = null)
	begin
     set @selectedid=newid()
     INSERT INTO StockDB.dbo.Supplier values (@selectedid,@SUPNAME,@SUPNUMBER)
	end

	return
Kipetcoff
Дата: 22.01.2009 11:59:03
ветерочек,

Странно,но процедура ничего не возвращает..случаем не нужно указывать что-то вроде return @selectedid в конце..если нужно то как преобразовать вывод в uniqueidentifier..
iap
Дата: 22.01.2009 12:01:52
Kipetcoff
ветерочек,

Странно,но процедура ничего не возвращает..случаем не нужно указывать что-то вроде return @selectedid в конце..если нужно то как преобразовать вывод в uniqueidentifier..
А
@selectedid  uniqueidentifier=null out
зачем, по-Вашему, сделано?
Паганель
Дата: 22.01.2009 12:06:41
ветерочек
if (@selectedid = null)
Это только я вижу?
Kipetcoff
Дата: 22.01.2009 12:12:20
Паганель,

А как правильно?
iap
Дата: 22.01.2009 12:13:30
Паганель
ветерочек
if (@selectedid = null)
Это только я вижу?
Потому что свежим взглядом
Ken@t
Дата: 22.01.2009 12:14:04
	SELECT top 1 @selectedid = id
				FROM         StockDB.dbo.Supplier
				WHERE     ( SupplierNum LIKE @SUPNUMBER )

Да и это кривовато