2015-05-15 56 views
1

目标:拥有链接到客户帐单的Excel文档。PL/SQL CONCAT功能

期望中的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生成标题为 “变量” 要求值的弹出窗口。
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) 

我没有带看到这个具体问题,我搜索,但如果我找到一个解决方案将更新。会有人看到这个问题或能够提出一个解决方法吗?

回答

1

&即与号被认为是替代操作者在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> 
+0

我只是在看相同的结论([交] [1])。让我真正阅读这个问题,看看&符号可能是问题。 非常感谢您的意见。 [1]:http://stackoverflow.com/questions/1137354/oracle-pl-sql-escape-character-for-a –

+0

@ user3240704&符号是问题,请尝试'set define off',然后重试。请标记为已回答,会帮助他人。 –

0

尝试以下查询: -

SELECT account_id, bill_id, CONCAT('=HYPERLINK(".\"&',bill_id,'&"-00.PDF")') 
FROM customer_table;