Informatica pre/post-sql 中的匿名 PostgreSQL PL/SQL

问题描述 投票:0回答:1

我正在尝试在 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 映射参数,但事实并非如此。我尝试过转义字符、单引号、双引号等,但无法使其工作。如果不需要的话,我不想将其作为存储过程来执行。

有什么想法吗?

postgresql plsql informatica
1个回答
0
投票

看起来这就是解决方案...用单引号代替 $$,并使用单引号对块中的任何内容使用双单引号:

do '
begin raise notice ''>>>>>>>>>>>>>>>>>>Test Proc''; 
end '; 

此处也引用了 错误:“$BODY$ 处或附近未终止的美元引号字符串”

© www.soinside.com 2019 - 2024. All rights reserved.