在SQL Developer中, 我想这样调用一个脚本:
@"path\to\script.sql" develop
,然后在脚本中使用值develop
作为表前缀,如下所示:
SELECT * FROM <parameter>_table;
,然后应评估为SELECT * FROM develop_table
在SQL Developer中是否可能发生这种情况?
答案 0 :(得分:1)
请参阅下面的文章。它将回答您的问题。
https://blogs.oracle.com/opal/sqlplus-101-substitution-variables#2_7
我将根据该博客文章为您举例。
创建虚拟表:
CREATE TABLE t(x NUMBER, t VARCHAR2(255));
INSERT INTO t(x, t) VALUES (1, 'Example');
COMMIT;
以下脚本已保存在 C:\ Users \ William 中。文件名是 example.sql 。
SELECT *
FROM &1
;
现在,我从SQL Developer执行:
@C:\Users\William\example.sql t
请注意,当您将参数传递给类似这样的脚本时,您将传递存储在隐式命名的替换变量中的文本值。替换变量是按其顺序命名的(例如,&1然后&2然后&3等)。
这是脚本输出:
old:SELECT *
FROM &1
new:SELECT *
FROM t
X T
-- ----------
1 Example
您可能应该花一些时间考虑要解决的问题的其他解决方案。您可能不需要通过SQL开发人员执行 script 。也许最好根据输入给过程的参数来创建一个生成动态SQL的过程。然后,您将在过程内部的动态SQL语句上使用EXECUTE IMMEDIATE。
当执行诸如ETL之类的操作(与查询相对)时,我个人可能会发现该技术更有用。再说一次,我不是专家,那里也许还有更好的解决方案。