0

データベース名がトリガー中に変数として決定されるデータベース内のテーブルからデータを取得する必要があります。次に、この変数が、トリガー中に変数としても決定されたアイテムの決定されたデータベース内のテーブルから seqno を取得する必要があることを知っています。
変数に設定する前にSQLステートメントを作成する必要があると想定しているため、このルートを試しています。これは機能していません。これを行うための最良の方法を知る必要があります。

DECLARE @SU_SEQNO INTEGER, @SU_NAME VARCHAR(50), @SU_OWNER VARCHAR(15), @SUD_SEQNO INTEGER, @SQL NVARCHAR(500)

SET @SU_OWNER = 'XXX'
SET @SU_NAME = '1ABC234'

SET @SQL ='SELECT @SUD_SEQNO=SEQNO FROM ' + (@SU_OWNER) + '.SU_MAIN 
              WHERE UNITNAME= ' + @SU_NAME 
SET @SUD_SEQNO = (EXECUTE (@SQL))

これについて何か助けてくれてありがとう

4

2 に答える 2

0

From:ストアド プロシージャ内の動的 SQL から結果を取得する

SET @SQL = N'SELECT DISTINCT @FiscalYear = FiscalYear FROM ' + @DataSource;
EXEC sp_executesql @SQL, N'@FiscalYear INT OUTPUT', @FiscalYear OUTPUT;

PRINT @FiscalYear;

上記のように、sp_executesql メソッドを使用するように再設計します。これでうまくいくはずです。

于 2013-04-12T09:55:17.097 に答える
0

コードを修正しましたが、動作します

declare @su_owner varchar(15) = 'DBTEST'
declare @SU_SEQNO INTEGER=1, @SUD_SEQNO INTEGER=0, @SQL NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500), @SU_NAME_INPUT VARCHAR(50)='SU123'

SET @SU_NAME_INPUT = (SELECT UNITNAME FROM SU_MAIN WHERE SEQNO=@SU_SEQNO)
SET @SU_NAME = (SELECT UNITNAME FROM SU_MAIN WHERE SEQNO=@SU_SEQNO)

SET @SQL = N'SELECT @sud_seqnoOUT=MAX(SEQNO) FROM ' + quotename(@su_owner) + '.[dbo].[SU_MAIN] WHERE UNITNAME]=@SU_NAME_INPUT' ;

SET @ParmDefinition = N'@SU_NAME_INPUT VARCHAR(50),@sud_seqnoOUT INT OUTPUT'

EXEC sp_executesql @SQL,@ParmDefinition,@SU_NAME_INPUT = @SU_NAME,
            @sud_seqnoOUT = @SUD_SEQNO OUTPUT
于 2013-04-15T04:00:15.910 に答える