2012-11-04 11 views
0

이 저장 프로 시저에서 할당 된 변수 값이 고정되어 있습니다. SQL Server 저장 프로 시저의 여러 변수

@EntityID int, 
@Title1 varchar(10) OUTPUT, 
@Title2 varchar(10) OUTPUT 
AS 
    Declare @T1 varchar(10) 
    Declare @T2 varchar(10) 
BEGIN 

    SELECT  
     dbo.Entity.EntityID, dbo.Types.TypeName AS Title1, Types_1.TypeName AS Title2 
    FROM   
     dbo.Entity 
    LEFT OUTER JOIN 
     dbo.Types AS Types_1 ON dbo.Entity.Title2 = Types_1.TypeID 
          AND dbo.Entity.Title2 = Types_1.TypeID 
    LEFT OUTER JOIN 
     dbo.Types ON dbo.Entity.Title1 = dbo.Types.TypeID 
    WHERE  
     (dbo.Entity.EntityID = @EntityID) 
END 

나는 Title1Title2의 값을 반환하는 것을 시도하고있다. 쿼리가 작동하고 값을 반환하지만 다른 곳에서 사용해야합니다. ,

먼저 SELECT 또는 SET 사용하여 PROC 어딘가에 이러한 매개 변수의 값을 설정합니다

+3

"다른 곳에 사용"한다는 것은 무엇을 의미합니까? –

+0

프로 시저를 호출 한 응용 프로그램에 값을 다시 보내고 싶습니다. – Steve

답변

1

당신은 두 가지 일을 할 필요가있다. @Andomar이가 (이름이 같은 열에서 값을 반환하는하지만 실제로 매개 변수를 설정하지 않습니다 기존 코드)이처럼 SELECT 문을 변경하여 수행 할 수 있습니다 언급 한 바와 같이 :

SELECT @Title1 = dbo.Types.TypeName, @Title2 = Types_1.TypeName 

그런 다음 호출 프로그램에서 해당 값을 캡처해야합니다. 다른 SQL 코드 나 ADO.NET 같은 코드에서 저장 프로 시저를 호출하는지 여부는 확실하지 않습니다.

DECLARE @Title1 VARCHAR(10), @Title2 VARCHAR(10) 
EXEC MyProc @[email protected] OUTPUT, @[email protected] OUTPUT 

당신은 ADO.NET에서 전화하는 경우, 당신은 set the ParameterDirection as Output or InputOutput에 필요한 매개 변수와 함께 시저를 호출 SQL의 경우에는 먼저 출력 매개 변수를 선언하고 다음과 같이 시저를 호출해야합니다 , 그 후에 매개 변수의 값을 읽으십시오.

+0

토비와 안도 마르 감사합니다. 나는 한순간에 가까웠지만, 테이블 별칭을 남겨 두었고 오류가 계속 발생했기 때문에 모든 것이 엉망이되었습니다. – Steve

1
SELECT  @Title1 = dbo.Types.TypeName 
,   @Title2 = Types_1.TypeName 
... 
+0

나는이 Andomar를 어디에 둘 것인지 이해하지 못한다. – Steve

관련 문제