이것이 최선의 방법인지 확실하지 않지만 다음과 같이 OUTPUT 매개 변수가있는 저장 프로 시저가 있습니다. 내가 공급 존재하지 않는 알고 @site_name
이 조건 (@result is null)
사실 적이없는 경우 SQL Server에서 null에 대한 uniqueidentifier 테스트가 작동하지 않는 것 같음
create procedure [dbo].[sp_get_site_idx]
@site_name varchar(100),
@result uniqueidentifier output
as
begin
select @result = [primary_idx_col] from [site] where upper([site].[site_name]) = upper(@site_name);
if (@result is null)
begin
< insert a new row>
< run the above select statement again>
end;
end;
는 사실
@result
은 (프로그래밍 언어에서 예외가있을 때와 유사) 정의되지 않은 것으로 보인다. 나는 약간
select
문을 수정하면
가
create table [site] (
[primary_idx_col] UNIQUEIDENTIFIER DEFAULT NEWID() constraint pk_site_pk primary key,
...
);
이상하게 :
select @result = [primary_idx_col] from [site] where upper([site].[site_name]) = upper(@site_name) group by [primary_idx_col];
다음 (@result is null)
이 true로 평가되므로
표 [site]
을 만들었습니다.
이 동작을 설명해 주시겠습니까? 처음으로 select
성명서는 무엇입니까? 미리 감사드립니다.
가장 가능성이 @result의 valiable은 NULL 아닌'= NEWID()가 이 간부는, 당신의 가정이 올바른 @Result output' – bummi
@bummi하지 sp_get_site_idx @Result 고유 식별자 선택 @ 결과를 선언 ! 이 문제는 프로 시저가 호출되는 방식과 관련이 없습니다 :'declare @site_index uniqueidentifier; sp_get_site_idx @previously_declared_site_name, @result = @site_idx OUTPUT;을 실행하십시오. –