2

最終結果を取得するには、SQL クエリの結果 (既に SQL の形式) 自体を実行する必要があります。

したがって、最初に実行するクエリでは次のようになります

Select Top(1) RequiredQuery as ReqQry from EPMaster 

結果としてReqQry別のクエリを取得し、それを別のクエリの形式で実行して最終結果を取得します。

2 番目のクエリでも、where 句でいくつかのパラメーターを渡す必要があります。

Select Top(1) RequiredQuery as ReqQry 
from EPMaster 
--ReqQry after its execution returns:
Select Top(1) (FirstName + ' ' + LastName) as FullName 
from DPMaster 
where DmID = @DomainID and PnID = @PersonID

Params@DomainID@PersonIDC# プロジェクトの DAL レイヤーから渡します。

したがって、ストアドプロシージャを使用して行う必要があると思います。

--------------詳しい説明--------------

ここでは、1 つの SQL ステートメントを実行して、前のステートメントの結果となる次の SQL ステートメントを取得します。最初のクエリを実行すると、結果に 2 番目のクエリが表示され、それを再度実行して最終結果を取得します。

2 番目のクエリを実行するには、C# プロジェクトから渡される 2 つのパラメーターが必要@DomainIDです@PersonID。したがって、これらすべてを処理するためのストアド プロシージャを作成し、プロジェクトからの 1 番目のクエリと共に必要なパラメーターを渡す場合、最初に 1 番目のクエリを実行し、次に 2 番目のクエリ (パラメーターPersonIDとを使用DomainID) を実行する必要があります。最初のクエリ。その後、最終結果が得られます。

4

2 に答える 2

2

最初のプロシージャ/クエリから返された nvarchar(max) クエリ文字列を実行するには、Dynamic SQLを使用する必要があります。

編集:

DECLARE @ResultOfTheFirstQuery nvarchar(max)

SELECT @ResultOfTheFirstQuery = (Select Top(1)RequiredQuery 
                                 as ReqQry from EPMaster)

exec sp_executeSql @ResultOfTheFirstQuery

または、複雑なロジックが必要な場合は、戻り値を取得できる別の SP を作成できます。

DECLARE @ResultOfTheFirstQuery nvarchar(max)

SELECT @ResultOfTheFirstQuery = FirstStoredprocedure @params

exec sp_executeSql @ResultOfTheFirstQuery

これは、パラメーターの戻り値を取得する方法について、すでによく回答されている質問です。RETURNまたはOUTPUTパラメーターを使用できます。

sp_executeSqlの使用方法は次のとおりです。

于 2012-09-12T11:13:15.143 に答える
0
Declare @SQL as nvarchar(MAX);
SET @SQL = (Select Top(1)RequiredQuery as ReqQry from EPMaster);
EXEC (@SQL);
于 2012-09-12T11:14:24.963 に答える