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

SQLServerストアドプロシージャで動的where句を作成する

    少なくとも1つの問題:文字列値を一重引用符で囲む必要があり、文字列内の値をエスケープするには、それらを2倍にする必要があります:

    WHERE ' + @pi_colName + ' = ''' + @pi_colValue + ''' AND ...
    

    @sql変数を100文字より大きいものとして宣言することもできます。文字列が切り捨てられているようです。

    @pi_colNameの可能な値が有限であり、データ型が常に文字列であり、列が照合互換である場合、次のようなことを実行して動的SQLを回避できます。

    SELECT ...
    WHERE CASE @pi_colName 
      WHEN 'col1' THEN col1
      WHEN 'col2' THEN col2
    END = @pi_ColValue;
    



    1. システムテーブルmaster..spt_valuesの目的は何ですか?また、その値の意味は何ですか?

    2. SQL Server Management Studio(SSMS)でのスタートアップ環境の構成-SQL Server/TSQLチュートリアルパート7

    3. Oracle SQL Developerを使用してデータをエクスポートする方法は?

    4. 最初にコードを使用して文字列インデックスを作成する