2016-03-29 6 views
4

列にselectステートメントを格納する必要があります。このような列に格納するためのSELECTステートメントのエスケープ

何か:

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT) 
VALUES (1, 'SELECT COUNT(*) FROM ANOTHER_TAB') 

選択は簡単です、それは簡単ですが、選択はより複雑に得るとき、それは選択の適切なエスケープを維持するための痛みであることを取得し、書式設定

SELECT COUNT(*) 
    FROM ANOTHER_TAB 

しかし、それは引用符で囲まれたテキスト内の改行に置くために私を必要とします。それはこのように見える場合

は例えば、SELECTを読みやすいです。

別の問題については、この 'STATUS =' 'ON' ''のような引用符をエスケープするのは苦痛です。 1つの見積もりをコーディングしたいと思います。

さらに別の問題は、selectを引用符で付けるとすぐに構文の強調表示が失われることです。

書式設定に役立つ何らかのストアドプロシージャがありますか?

私はそれは次のようになります考えています:ある

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT) 
VALUES (1, 
QUOTETHIS(SELECT COUNT(*) 
      FROM ANOTHER_TAB 
      WHERE STATUS = 'ON' 
     )) 

は、QUOTETHISは括弧の間のすべてを取り、それを引用しています。これはPerlのqw()の機能によく似ています。

もう一つのアイデアは、このような何かを行うことです。

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT) 
VALUES (1, READFILEASSTRING('FILE_CONTAINS_SELECT.sql')) 

その後、私は選択が含まれている個々のファイルの束を維持することができ、その後、構文の強調表示が働くだろう。

+0

あなたは、挿入のためのパラメータ化クエリを使用する場合、それは問題ではありません。アプリケーションを使用して行を挿入しているのか、それともSSMSだけで操作していますか?後者の場合は、テーブルの行を編集する(エクスプローラのテーブルを右クリック)し、クエリを入力します。 – HABO

+0

なぜ管理スタジオを使用してテキストを貼り付けるのはなぜですか? – Vincent

+0

@Vincent自動化されたスクリプトであるため、この問題の管理スタジオは使用しません。 –

答えて

1

これは理想的ではないかもしれませんが、次のようなエスケープ文字( ')には異なる文字を使用しないでください。それから、REPLACEメソッドを使って|エスケープ文字を含む文字。

Click here for code

関連する問題