2016-11-09 4 views
-2

が、それは動作しません:PL/SQL、文字列/関数に一重引用符を書く方法は?私はこの方法を試してみましたOracleのPL/SQLで

.... 
sql_3 := sql_3 || q'[ upper(name_p) like Upper('%input_name%')]'; 

はどのようにリテラル引用符を使用する必要がありますしますか?または一重引用符を表す二重引用符?

+0

2つの単一引用符の間に一重引用符を追加しようとしています このように '%'入力名% '' '' – Sawalhah

+1

それは動作します - [代替引用構文は問題ありません](https://docs.oracle.com) /cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00218)。なぜそれはないと思いますか?エラーが発生していますか?もしそうなら、それはその行からのものですか? –

+1

正確なエラーメッセージは何ですか?あなたの考えに起因することはほとんどありません。あなたが使っているフロントエンドとバージョンは何ですか? (SQL DeveloperやToadのようなもの... - どのような製品とバージョン?)古いバージョンは別の見積り演算子を理解できないかもしれません。 – mathguy

答えて

-1

'をエスケープし、文字列の2番目の部分の前にqを削除する必要があります。私のマシンで

declare 
    varr varchar2(100); 
begin 
    varr := 'aaa'; 
    varr := varr || q'[ upper(name_p) like Upper('%input_name%')]'; 
    dbms_output.put_line(varr); 
end; 
/

作品:あなたは少し奇妙だが、Oracle

sql_3 := sql_3 || ' upper(name_p) like Upper(''%input_name%'')'; 

でコマンドを実行しようとしている場合は、SQLコマンド内のスクエアブラケットも、問題を行います。

+0

質問の構文は有効です。「q」と角括弧は[代替の引用機構]からです(https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00218 )を文字列リテラルに使用します。あなたが持っているものはもちろん大丈夫です...しかし、表示された内容を変更する必要はありません。 –

+0

その文が私のために働いていないという理由で、その理由でq '[...]を使用しようとしました。 – rockerchain

+0

@AlexPoole私の誤り構文を知らなかった。しかし実際問題のものは正しいと思われ、うまくいくはずです。 – Kacper

関連する問題