oracle - 如何在 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')
解决方案
您不需要concat
,只需在 shell 脚本中使用与简单变量替换相同的方式:
SQL> def path1='mypath'
SQL> def path2='&path1/xyz.sql'
SQL> prompt &path1
mypath
SQL> prompt &path2
mypath/xyz.sql
推荐阅读
- node.js - Firestore 功能可跟踪文档的新写入并限制所有文档的计数
- c# - C# 使用 new 更改装饰器组件
- reactjs - 反应本机 - onPressIn 取消滚动
- scala - 使用 scala / spark 计算数据框列中每一行的 z 分数
- navbar - 如何对齐左导航栏 React-Bootstrap
- android - LeakCanary 反混淆插件找不到任何缩小的变体
- python - 十六进制符号 2 的补码。整数到十六进制转换
- c - 在C中的strstr指针之前分隔字符串中的所有字符
- single-page-application - 带有单页应用程序的 MSALjs 使调试变得不可能
- python - 基本排序/排序算法