sql >> データベース >  >> RDS >> Sqlserver

SQL Server:メッセージ102、レベル15、状態1、2行目'='付近の構文が正しくありません

    SQLステートメントを実行する前に、SQLステートメント全体を連結する必要があると思います。

    DECLARE 
        @TableA nvarchar(255)='TableA',
        @DOCID1 nvarchar(MAX),
        @SqlStmt NVARCHAR(500),
        @DOCID2 int;
    
    SET @SqlStmt = N'SELECT TOP (1) ' + @DOCID1 + N' = DOCID1, ' + @DOCID2 + N' = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';
    
    EXEC (@SqlStmt)
    

    私が覚えている限り、EXEC内に式や計算を含めることはできません。 コマンド-事前に準備されたステートメントを取得し、それを実行します

    また、あなたの変数が何を保持しているのか完全にはわかりません-@DocID1 および@DocID2 -値を設定しますか、それとも設定する別の変数の名前を保持しますか??

    更新: 実際に@DocID1の値を設定したい場合 および@DocID2 、その後、クエリは最初から間違っていました-次に、次のようなものが必要です:

    DECLARE 
        @TableA nvarchar(255) = 'TableA',
        @SqlStmt NVARCHAR(500);
    
    SET @SqlStmt = 
        N'DECLARE @DocID1 NVARCHAR(MAX), @DocID2 INT; ' +
        N'SELECT TOP (1) @DOCID1 = DOCID1, @DOCID2 = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';
    
    EXEC (@SqlStmt)
    

    ただし、これら2つの変数のスコープは内部 動的に実行されるSQLであり、スクリプトの「外部」では使用できません。



    1. Laravelクエリビルダーで作成日ごとに行をカウントするにはどうすればよいですか?

    2. PHPmySQL検索機能がさまざまな分野に参加

    3. どのトランザクションがWaitingfortableメタデータロック状態を引き起こしているのかを見つけるにはどうすればよいですか?

    4. 一致した要素の単純なリストをフェッチするPHPPDOメソッド