在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

在SQL Developer中, 我想调用这样的脚本:

@“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之类的操作时(与查询相反),该技术更有用。再说一遍,我不是专家,可能还有更好的解决方案。

谢谢!这应该用于一次性作业脚本。这不是我们要经常做的事情。该参数只是为了简化在环境之间测试脚本。