【问题标题】:Variables for Read-Only Oracle SQL Queries只读 Oracle SQL 查询的变量
【发布时间】: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


【解决方案1】:

Oracle 绑定变量可能有助于检查示例代码@

https://blogs.oracle.com/sql/improve-sql-query-performance-by-using-bind-variables

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2019-02-23
    相关资源
    最近更新 更多