在SQL Developer的脚本中传递和使用参数
在SQL Developer中, 我想调用这样的脚本:在SQL Developer的脚本中传递和使用参数,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,在SQL Developer中, 我想调用这样的脚本: @“path\to\script.sql”开发 并使用脚本中的值develope作为表前缀,如下所示: 从_表中选择*然后应计算为从开发表中选择* 在SQL Developer中是否可以实现类似的功能 参见下面的文章。它会回答你的问题 我会根据那篇博客文章给你举个例子 创建虚拟表: CREATE TABLE t(x NUMBER, t VARCHAR2(255)); INSERT INTO t(x, t) VALUES (1, 'Exam
@“path\to\script.sql”开发
并使用脚本中的值develope
作为表前缀,如下所示:
从_表中选择*代码>然后应计算为从开发表中选择*
在SQL Developer中是否可以实现类似的功能 参见下面的文章。它会回答你的问题
我会根据那篇博客文章给你举个例子
创建虚拟表:
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 developer执行脚本。也许您最好创建一个基于您提供给过程的参数生成动态SQL的过程。然后在过程中的动态SQL语句上使用EXECUTE IMMEDIATE
我个人可能会发现,在执行ETL之类的操作时(与查询相反),该技术更有用。再说一遍,我不是专家,可能还有更好的解决方案。谢谢!这应该用于一次性作业脚本。这不是我们要经常做的事情。该参数只是为了简化在环境之间测试脚本。