首页 > 解决方案 > 如何在 oracle 中连接定义的变量?

问题描述

我是 Oracle 数据库的新手,我正在编写脚本。所以我尝试使用相对 var 路径运行很多脚本,并且我有子文件夹。

Folder A:
  Folder A.Child-1
  Folder A.Child-2
  RunAll.sql

Folder A.Child-1:
  Script 1
  Script 2

我知道我们可以像这样定义路径变量:

define path='C:\Folder A.Child-1';
@&pathScr\RunAll.sql;

如果我为 Eg: Script 1 放置完整路径,则该脚本可以是 exec。但是有没有办法做类似的事情:

define Scriptpath= Concat(&path, 'Folder A.Child-1')
@&Scriptpath\Script 1.sql;

这样我只需要声明一次路径。

我尝试了什么:

define Scriptpath= concat(&path, 'Folder A.Child-1')
@&Scriptpath\Script 1.sql;


define Scriptpath= &path || 'Folder A.Child-1'
@&Scriptpath\Script 1.sql;

Declare Scriptpath:= = &path || 'Folder A.Child-1';
Begin
End;
@&Scriptpath\Script 1.sql;

所有这些试用返回错误,例如

Can not open file concat(&path, 'Folder A.Child-1')

标签: oracleappend

解决方案


您不需要concat,只需在 shell 脚本中使用与简单变量替换相同的方式:

SQL> def path1='mypath'
SQL> def path2='&path1/xyz.sql'
SQL> prompt &path1
mypath
SQL> prompt &path2
mypath/xyz.sql

推荐阅读