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

T-SQL:連結された文字列を引数としてストアド プロシージャに渡すことはできません

    EXECUTE ステートメントの文法は、SELECT や SET などの他のステートメントとは異なります。たとえば、次の 2 ページの上部にある構文セクションを確認してください。

    EXECUTE ステートメント:http://msdn.microsoft.com/en-us/ライブラリ/ms188332.aspx

    SET ステートメント:http://msdn.microsoft.com/en-us/ライブラリ/ms189484.aspx

    EXECUTE の構文は のみを受け入れます

    SET の構文は を受け入れますが、

    値は基本的にハードコードされた定数ですが、式は評価されます。 varchar 'SELECT 1 + 1' を持つようなものです。現在はただの varchar 値です。ただし、評価することはできます このような文字列:

    EXEC('SELECT 1 + 1')
    

    私が指摘しているのは、EXEC コマンドは定義により式を許可していないということだけだと思いますが、これはすでにお気づきのようです。 T-SQL の開発者がどこでそのようにしたのか、その意図はわかりません。ストアド プロシージャのパラメーター リストのサブクエリ内でサブクエリをスローすることが許可されている場合、文法が手に負えなくなると思います。

    T-SQL 式:http://msdn.microsoft.com/en- us/library/ms190286.aspx



    1. SQL Server が同一である必要がある 2 つのクエリの結果を比較する

    2. 任意の列に Null 値があるすべての行を検索

    3. アロハエディター:画像/写真の挿入

    4. sqlbulkcopy、データベースの現在の行を上書きしたい