sql - Ignore hash character in a query on sqlplus
问题描述
i've launched this query on sql developer without error.
insert into
COMUNICAZIONI_TEMPLATE (ID, DESCRIZIONE, TESTO_TEMPLATE)
values
(3, 'TEMPLATE EMAIL NUOVO DOCUMENTO', 'Gentile <strong>$nome $cognome</strong>, <br>
Document list:
<br>
#foreach($doc in $listaDocumentiAssociatiATaleCf)
<strong>$doc.getNomeDocumento()</strong> relativo/a al contratto <strong>$doc.getNomeProdotto() </strong>, polizza numero <strong>$doc.getNumeroPolizza() </strong> <br>
#end
<br>');
But when i launch it with sqlplus i've the following errors:
SP2-0734: unknown command beginning "foreach($d..." - rest of line ignored.
SP2-0042: unknown command "end" - rest of line ignored.
There is a way to ignore special character '#' inside the string?
解决方案
这就是你现在所拥有的:
SQL> select * from comunicazioni_template;
no rows selected
SQL> insert into
2 COMUNICAZIONI_TEMPLATE (ID, DESCRIZIONE, TESTO_TEMPLATE)
3 values
4 (3, 'TEMPLATE EMAIL NUOVO DOCUMENTO', 'Gentile <strong>$nome $cognome</strong>, <br>
5 Document list:
6 <br>
7 #foreach($doc in $listaDocumentiAssociatiATaleCf)
SP2-0734: unknown command beginning "foreach($d..." - rest of line ignored.
7 <strong>$doc.getNomeDocumento()</strong> relativo/a al contratto <strong>$doc.getNomeProdotto() </strong>, polizza numero <strong>$doc.getNumeroPolizza() </strong> <br>
8 #end
SP2-0042: unknown command "end" - rest of line ignored.
8 <br>');
1 row created.
SQL> select length(testo_template) from comunicazioni_template;
LENGTH(TESTO_TEMPLATE)
----------------------
240
行实际上已插入,但有错误。
为什么呢?因为您遇到了SQLPREFIX 问题。
设置 SQL*Plus 前缀字符。在输入 SQL 命令或 PL/SQL 块时,可以在单独的行上输入 SQL*Plus 命令,并以 SQL*Plus 前缀字符为前缀。SQL*Plus 将立即执行命令,而不会影响您正在输入的 SQL 命令或 PL/SQL 块。前缀字符必须是非字母数字字符。
默认情况下,哈希#
是SQLPREFIX
字符。因此,将其更改为不同的内容(您插入的值中没有的内容,例如!
),然后重复操作:
SQL> rollback;
Rollback complete.
SQL> set sqlprefix "!"
SQL> insert into
2 COMUNICAZIONI_TEMPLATE (ID, DESCRIZIONE, TESTO_TEMPLATE)
3 values
4 (3, 'TEMPLATE EMAIL NUOVO DOCUMENTO', 'Gentile <strong>$nome $cognome</strong>, <br>
5 Document list:
6 <br>
7 #foreach($doc in $listaDocumentiAssociatiATaleCf)
8 <strong>$doc.getNomeDocumento()</strong> relativo/a al contratto <strong>$doc.getNomeProdotto() </strong>, polizza numero <strong>$doc.getNumeroPolizza() </strong> <br>
9 #end
10 <br>');
1 row created.
SQL> select length(testo_template) from comunicazioni_template;
LENGTH(TESTO_TEMPLATE)
----------------------
295
SQL>
正确的; 没有更多错误,长度现在应该是(295 个字符)。
推荐阅读
- asp.net-core - 错误:无法完成与服务器的协商:错误:SignalR
- python - Flask 响应 - TypeError:“NoneType”对象不可调用
- java - 如何避免使用双循环来改进这种方法?
- flutter - Flutter 如何在使用自定义滚动视图时(或内部)显示自定义剪辑器
- arm - 尾链 PensSV
- c++ - 如何使用 CMake 确保 Linux 和 Windows 中的相对路径相同
- c++ - 指针和计数问题
- json - 如何在 .NET Core 5.x 中为我的 JSON 字符串创建数据模型
- r - 将绘图添加到文档在函数内部不起作用
- javascript - 如何在以下代码中添加通配符?