问题描述
第一次在这里发帖,如有格式问题请见谅。
我正在尝试编写一个 Netezza 存储过程以在文件名通过循环时动态更新。但是,当尝试将文件夹路径定义为字符串时,反斜杠 '\' 会转义终止字符串的单引号。
...
OUTPUT_FILEPATH = 'C:\Users\Test\'
...
ERROR [01000] NOTICE: plpgsql: XXX.TEST 附近第 1 行编译过程中出错
ERROR [HY000] 错误:未终止的字符串从第 1 行开始
如果我尝试使用双反斜杠来显示转义字符,则会出现两个反斜杠字符。
...
OUTPUT_FILEPATH = 'C:\Users\Test\\'
...
注意:在 C:\Users\Test\\ 处创建批处理 TEST-B 01
如果我试图重复单引号一次或两次,它要么无法编译,要么重复字符串未终止的相同错误。
...
OUTPUT_FILEPATH = 'C:\Users\Test\''
...
ERROR [42000] 语法错误或访问冲突
...
OUTPUT_FILEPATH = 'C:\Users\Test\'''
...
ERROR [01000] NOTICE: plpgsql: XXX.TEST 附近第 1 行编译过程中出错
ERROR [HY000] 错误:未终止的字符串从第 1 行开始
我们如何防止转义字符转义 NZPLSQL 中的终止单引号?
完整脚本转载如下以供参考:
...
CREATE OR REPLACE PROCEDURE XXX.TEST()
RETURNS INTEGER
LANGUAGE NZPLSQL AS
BEGIN PROC
DECLARE
FILE_HDR NVARCHAR;
BATCH_ID NVARCHAR;
OUTPUT_FILEPATH NVARCHAR;
CNT INT;
BEGIN
CNT:=1;
FILE_HEADER:='TEST-B';
WHILE CNT < 10 LOOP
BATCH_ID:= TO_CHAR(CNT,'FM09');
OUTPUT_FILEPATH:= 'C:\Users\Test\'||FILE_HEADER||BATCH_ID||'.csv';
RAISE NOTICE 'Creating Batch % % at %',FILE_HEADER,BATCH_ID,OUTPUT_FILEPATH;
END LOOP;
END;
END_PROC;
...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)