0

テーブルから何らかの結果を返そうとしていますが、クエリは結果を返しません

ここにストアドプロシージャを実行する方法があります

EXEC spLog '145',' ','2531'

これは私のストアドプロシージャの例です。コンサートは同じで、テーブルから値を返します

Created Procedure spLog
 @logID nvarchar(400),
 @logAction nvarchar(400),
 @userId nvarchar(400)
AS
Begin
DECLARE @query nvarchar(4000)

if(LEN(@logID)>0)
BEGIN
SET @query = @query + 'Select * From LogTable where logID in ('+@logID+') AND userID = '+@userId + ''
END
if (LEN(@logAction)>0)
BEGIN
SET @query = @query + 'Select * From logAction where logAction in ('+@logAction+') AND userID = '+@userId + ''
END

EXEC sp_executesql @query

END

列の命名とテーブルの命名は単なる例です。無視してください。私の2つのテーブルは必要なアイテムで構成されていますが、返された結果はありませんでした。なしではなく何かを返す必要があります =(

期待される結果は [logTable 結果]+[LogAction 結果] または [logTable 結果] または [LogAction 結果] です

4

1 に答える 1

1

変数を宣言しましたが、その@query初期値を設定していないため、変数がNULL最初にあります。

DECLARE @query nvarchar(4000)

後で文字列を変数に連結NULL + 'something'すると、連結してもそれが作成されますNULL

SET @query = @query + 'Select * From LogTable where logID in ('+@logID+') AND userID = '+@userId + ''

と置き換えるだけです

 SET @query = 'Select * From LogTable where logID in ('+@logID+') AND userID = '+@userId + ''

または、前に変数を空白文字列に設定します。

DECLARE @query nvarchar(4000)
SET @query = ''
于 2013-05-23T07:29:12.767 に答える