ファンクション内での円マークについて
値をカンマ形式で変換するファンクションを作成しています。
ファンクションの内容は下記の通りです。
CREATE FUNCTION Test (DECIMAL) RETURNS VARCHAR(15) AS
'
DECLARE
arg ALIAS FOR $1;
str VARCHAR(16);
BEGIN
str := '''';
SELECT TRIM(TO_CHAR(arg, ''\\9,999,999,999'')) INTO str;
RETURN str;
END;
'
language 'plpgsql'
;
上記のコマンドを実行したらワーニングが出力されました。
下記が出力したワーニングの内容です。
WARNING: nonstandard use of \\ in a string literal
行 2: '
^
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
WARNING: nonstandard use of escape in a string literal
行 1: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999'))
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
QUERY: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999'))
CONTEXT: SQL statement in PL/PgSQL function "test" near line 6
CREATE FUNCTION
※一応、ファンクションは作成できたんですで・・・
ファンクションを実行したらワーニングと結果が出力されました。
SELECT test(10000);
下記が出力したワーニングの内容です。
WARNING: nonstandard use of escape in a string literal
行 1: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999'))
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
QUERY: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999'))
CONTEXT: PL/pgSQL function "test" line 6 at SQL statement
test
--------
10,000
(1 行)
下記のように円マークの箇所にEをつけたりしましたがワーニングが解消する事はできませんでした。多分、私の記述がいけないような気がします。
すみませんがどのように記述すればいいのでしょうか。
ご教授いただけませんでしょうか。
宜しくお願いします。
お礼
どうもquote_literal()というのを使うのが定石らしいので こちらで解決しました。ありがとうございました。