目标:拥有一个链接到客户账单的Excel文档。
所需的PL / SQL输出:
account_id | bill_id | '=HYPERLINK(".\"&'||bill_id||'&"-00.PDF")'
-----------+---------+----------
12345 | 10 | =HYPERLINK(".\"&10&"-00.PDF")
23456 | 11 | =HYPERLINK(".\"&11&"-00.PDF")
34567 | 12 | =HYPERLINK(".\"&12&"-00.PDF")
PL / SQL查询(documentation here)未获取第二个concat,PL / SQL Developer生成一个标题为“Variables”的弹出窗口,要求输入值。
Select account_id, bill_id, '=HYPERLINK(".\"&' || bill_id || '&"-00.PDF")' from customer_table
还测试了
Select account_id, bill_id, CONCAT( CONCAT('=HYPERLINK(".\"&',bill_id),'&"-00.PDF")') from customer_table
当前输出:
account_id | bill_id | '=HYPERLINK(".\"&'||bill_id||'&"-00.PDF")'
-----------+---------+----------
12345 | 10 | =HYPERLINK(".\"&10)
23456 | 11 | =HYPERLINK(".\"&11)
34567 | 12 | =HYPERLINK(".\"&12)
我在搜索中没有看到这个特殊问题,但如果找到解决方案,我会更新。有人会看到这个问题或能够提出一个解决方法吗?
答案 0 :(得分:1)
&
,即&ampersand在 SQL*Plus
中被视为替代运算符。好吧,尽管如此,大多数基于GUI的客户端工具都能够执行SQL * Plus命令。
您的客户端工具正在考虑将&
作为替代运营商。
您可以 ESCAPE 。
或者,set define off
在会话级别。
例如,
SQL> SELECT 'HYPERLINK(".\"&10&"-00.PDF")' FROM dual;
Enter value for 10:
old 1: SELECT 'HYPERLINK(".\"&10&"-00.PDF")' FROM dual
new 1: SELECT 'HYPERLINK(".\"&"-00.PDF")' FROM dual
'HYPERLINK(".\"&"-00.PDF"
-------------------------
HYPERLINK(".\"&"-00.PDF")
SQL> SET DEFINE OFF
SQL> SELECT 'HYPERLINK(".\"&10&"-00.PDF")' FROM dual;
'HYPERLINK(".\"&10&"-00.PDF"
----------------------------
HYPERLINK(".\"&10&"-00.PDF")
SQL>
答案 1 :(得分:0)
尝试以下查询: -
SELECT account_id, bill_id, CONCAT('=HYPERLINK(".\"&',bill_id,'&"-00.PDF")')
FROM customer_table;