リンクされたデータベースを照会して値を返しますが、大変苦労しているストアプロシージャ(または簡単な場合は関数)を記述しようとしています。各変数を参照してください最後にSELECTステートメントを使用してストアドプロシージャ内のリンクされたデータベースから値を返すことができません
CREATE Proc dbo.Sample (@FolderID as VARCHAR(50),
@FolderName varchar(50) OUTPUT)
AS
BEGIN
DECLARE @ParamaterDefinition NVARCHAR(500)
DECLARE @FolderNameRet VARCHAR(50)
DECLARE @TSQL NVARCHAR(4000)
SET @TSQL = N'SELECT folder_name FROM OPENQUERY(LINKDB, ''SELECT
folder_name
FROM FolderTable
where folder_id = '+ @FolderID +' and folder_status != 0'')'
SET @ParamaterDefinition = N'@FolderID as VARCHAR(50),
@FolderName VARCHAR(50) OUTPUT'
EXEC SP_EXECUTE @TSQL,
@ParamaterDefinition,
@FolderID,
@FolderName = @FolderNameRet output
SELECT @FolderNameRet AS "Output"
SELECT @FolderID AS "FolderID1"
SELECT @TSQL AS "Script"
SELECT @FolderName AS "FolderName1"
SELECT @ParamaterDefinition AS "Parameters"
RETURN @FolderNameRet
END
を、生成されたスクリプトが細かく、取得するには、別途、これを実行することができます:私が試してみました何任意の助けも大歓迎...
私の希望する価値。しかし、@FolderNameRetはまだNULLになっています。
私は値を間違って返そうとしているように感じますが、私が試した方法はすべて失敗しています。
つまり、OPENQUERYステートメントの一部として実行するには、文字列形式にする必要があるため、動的スクリプト内に戻り値を設定することはできません。また、EXEC @FolderNameRet = SP_EXECUTE @TSQL
を使ってみましたが、これもNULLを返しています。
助けてください!あなたは、変数を@FolderNameに値を代入しようとすることができ
正確に私が逃していたもの、ありがとう。 'SP_EXECUTE'を' SP_EXECUTESQL'に変更する必要もあります。 –