0

このストアドプロシージャで割り当てられた変数値に固執しています。

@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

Title1との値を返そうとしていますTitle2。クエリは機能し、値を返しますが、他の場所で使用する必要があります。

4

2 に答える 2

1
SELECT     @Title1 = dbo.Types.TypeName
,          @Title2 = Types_1.TypeName
...
于 2012-11-04T18:49:04.800 に答える
1

次の 2 つのことを行う必要があります。

まず、SELECT または SET を使用して、PROC のどこかにこれらのパラメーターの値を設定します。@Andomarが述べたように、これはSELECTステートメントを次のように変更することで実行できます(既存のコードでは、同じ名前の列に値を返していますが、実際にはパラメーターを設定しません):

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

次に、呼び出しプログラムでこれらの値を取得する必要があります。このストアド プロシージャを別の SQL コードから呼び出しているのか、ADO.NET などのコードから呼び出しているのかわかりません。SQL からの場合は、最初に出力パラメーターを宣言してから、次のように proc を呼び出す必要があります。

DECLARE @Title1 VARCHAR(10), @Title2 VARCHAR(10)
EXEC MyProc @Title1=@Title1 OUTPUT, @Title2=@Title2 OUTPUT

ADO.NET から呼び出す場合は、ParameterDirection を Output または InputOutput として設定し、パラメーターを使用して proc を呼び出し、その後パラメーターの値を読み取る必要があります。

于 2012-11-04T23:04:56.337 に答える