我正在尝试在 Informatica 映射中源限定符的 SQL 之前或之后执行匿名 PostgreSQL PL/SQL 块。 PostgreSQL PL/SQL 块在“do”和“end”关键字之后需要 $$ 或 $$。
在 pre-sql 中与匿名 PostgreSQL PL/SQL 块的映射如下:
do $$
begin
raise notice '>>>>>>>>>>>>>>>>>>Test Proc';
end $$;
因此错误而失败:
Database driver error...
CMN_1022 [do $$
begin
raise notice '>>>>>>>>>>>>>>>>>>Test Proc'
FnName: Execute Direct -- [Informatica][ODBC PostgreSQL Wire Protocol driver][PostgreSQL]ERROR: VERROR; unterminated dollar-quoted string at or near "$$
begin
raise notice '>>>>>>>>>>>>>>>>>>Test Proc'"(Position 4; File scan.l; Line 1236; Routine scanner_yyerror; ), SQLSTATE [37000]
]
我尝试了另一种形式,将文本放在 $ 字符之间,但得到了相同的错误。我认为它将“$”解释为 Informatica 映射参数,但事实并非如此。我尝试过转义字符、单引号、双引号等,但无法使其工作。如果不需要的话,我不想将其作为存储过程来执行。
有什么想法吗?
看起来这就是解决方案...用单引号代替 $$,并使用单引号对块中的任何内容使用双单引号:
do '
begin raise notice ''>>>>>>>>>>>>>>>>>>Test Proc'';
end ';
此处也引用了 错误:“$BODY$ 处或附近未终止的美元引号字符串”