【发布时间】:2017-11-30 15:11:13
【问题描述】:
我是数据库的只读用户,我的任务是向系统中添加一些数据,并且需要在每一步验证我的进度。添加和修改数据是在门户中完成的任务,而不是直接从我的 SQL 文件中完成。
我有一个 SQL 文件,其中包含多个重要的 SELECT 语句,每次执行此过程时,我都必须对每个语句编辑一两个值。每个语句之间的值相同。这些语句中的每一个都在流程的不同点独立运行,组合这些语句会使验证变得困难和混乱。
举个简单的例子:
SELECT *
FROM cats
WHERE name = 'pepper';
SELECT *
FROM dogs
WHERE name = 'pepper';
SELECT *
FROM birds
WHERE name = 'pepper';
在上面的语句中,所有宠物的名称都是“pepper”,但我一次将数据加载到这些表中,并且在验证猫加载正确之前,我无法加载狗。
有没有办法在文件开头声明我正在搜索的名称,该名称将传播到每个 SELECT 语句中,类似于在几乎所有其他语言中声明变量?它至少需要有一个文件的范围,但不需要(不应该)有更大的范围。
【问题讨论】:
-
:value会起作用吗?这将取决于您如何运行查询(即where name = :value -
@JohnHC 那是 SQL+ 的东西吗?
-
我知道@JohnHC 的建议适用于 Oracle SQL Developer...
-
@Metomorphose 看看这个StackOverFlow Question
-
“SQL 文件”是什么意思?如果它是 SQL*Plus 脚本,则可以使用替换变量,例如
&name。无论如何,您的问题的答案在于您使用的脚本语言,而不是 SQL。
标签: sql oracle variables session-variables sqltools