问题标签 [bind-variables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5893 浏览

java - 用于 oracle alter session 查询的 Java 准备好的语句参数

我尝试执行 oracle alter session 查询以更改语言设置,但失败并出现错误“ORA-01036:非法变量名称/编号”。

Oracle 不允许在 ddl 语句中绑定变量。由于绑定变量具有性能增益(在我的用例中,此更改会话查询将在 Web 应用程序中使用的每个连接上执行)并且它还可以防止应用程序从我想使用它们的 SQL 注入。如果不绑定变量,是否还有其他优化方式来执行上述更改会话查询?

0 投票
6 回答
19733 浏览

sql - 在 Oracle BIND 变量中声明多个值

我正在尝试将大约 3000 个值的多个值传递给 Oracle SQL PLUS 命令提示符中的 BIND 变量,例如..

我想查看我的结果,因为必须提取与该变量列表匹配的EMP列上的所有值。JOB


由于它是生产环境,我不能创建只有我在 SELECT 子句上授予的表。

当我从 UNIX-SQL PLUS 环境运行相同的查询时,需要更多关于它是如何执行的信息。

它会提示要求输入 BIND 变量值还是我可以引用具有以下值的文件... :JOB1 := 'MANAGER' :JOB2 := 'CLERK' :JOB3 := 'ACCOUNTANT'

0 投票
2 回答
9629 浏览

sql - PL/SQL 代码使用 :1, :2, :3 等等

这段代码是什么意思,你怎么称呼这个方法?我怎么知道 :1、:2、:3 等的值是多少?


(PL/SQL 过程)

0 投票
4 回答
1810 浏览

sql - 在 Oracle 中将绑定变量与文字混合

这个问题可能更适合 DB stackexchange 站点,但我不确定。

无论如何,我正在处理优化查询,并且我了解到使用绑定变量会使解析器工作不那么努力。我们已经看到正在运行的查询有所改进,但我想知道将我们的软件传入的静态变量替换为绑定变量是否也会有所帮助。这是一个例子:

我可以说出来

我只是进行更改,但是在软件中实际进行更改并查看它所产生的差异的过程有点漫长而乏味。有谁知道混合文字(如第一个示例)是否会损害优化器的效率,即使它们始终相同?

提前致谢。

0 投票
1 回答
665 浏览

sql-server - 绑定变量选项

是否可以在 SQL Server 中使用与 Oracle 相同的表示法来表示绑定变量,即:0、:1 而不是使用?。

我已经搜索过,但没有找到任何关于此的结论。目前,我的解决方案使用绑定变量将值引入我在数据库上运行的语句中,这在 Oracle 中运行良好,但我还需要在 SQL Server 和 PostGIS 中执行相同的操作,仅举几例。我不想说例如:

*AddParameter() 是我的包装类中的一个函数,它在调用我编写的执行函数时将值添加到要添加到命令对象的列表中。

我希望我的代码尽可能干净,并且不包含如上所示的硬编码内容。我想要一个适合所有人的解决方案。(是的,我知道这可能是一厢情愿!)

我知道我可以使用字符串替换来做到这一点,但这不是我所追求的。我真的不想使用这样的解决方法。我的项目经理还要求我尝试使用绑定变量找到解决方案。

有任何想法吗?

0 投票
2 回答
1035 浏览

plsql - 在 PL/SQL 中访问绑定变量

我正在尝试在 Oracle Express Edition 编辑器中运行一个程序。当我执行程序时,我得到一个错误

谁能帮我理解为什么我会出错以及如何修复代码?

我得到的输出

0 投票
1 回答
1053 浏览

java - 不能在 DDL 语句中使用绑定变量。备择方案?

首先,一个前言:我正在编写一个 java 类,它使用 jdbc 在数据库上创建临时表。我使用 JSE6 和 Oracle 11XE 作为测试数据库,但该类也需要与 DB2 兼容。

我试图创建的临时表来自一个更大的表,并且我对数据进行了一些过滤和聚合。我过滤的参数是由用户在运行时决定的。我正在尝试做的一个简化示例是:

我的问题是我需要指定参数来过滤数据,并且我需要确保它们被正确地转义/本地化/键入。使用准备好的语句会很容易,但我不能将绑定变量与 DDL 一起使用。我采取的临时解决方案是自己更改查询字符串,将参数写入正确的位置,但这意味着我现在必须实现所有检查,而不是依赖 PreparedStatement 对象为我做这件事,除了丢失所有其他好处。

我调查了其他解决方案,但到目前为止,没有一个能说服我:

  1. 我可以先创建一个空的 temp_table,然后用 INSERT INTO temp_table(id, column1) (SELECT ...) 填充它,但似乎我可能会导致性能损失,所以我想坚持 CREATE temp_table AS

  2. 我考虑过创建一个临时语句来保存内部 SELECT 查询,并让它生成格式正确/本地化/等。查询字符串,但我还没有找到任何方法从中获取最终查询(我读到这里绝对不可能)。我在这种情况下找到的唯一选择是使用DebuggableStatement,但我不确定我是否可以将它包含在项目中(而且,这似乎是解决我的问题的一种非常不雅的方式)

  3. 我正在考虑的另一个解决方案是简单地将创建临时表的查询(对于它们中的每一个我将整个 CREATE AS (SELECT...) 放在数据库中的一个过程中,我将然后可以使用 CallableStatement 调用。这样我可以避免处理类型化并且仍然具有良好的性能,但代价是与数据库的耦合更紧密(我必须确保程序在那里,或者在 java 中管理它们的添加/从数据库中删除)

所以,我的问题是:有没有比我能想到的更好的选择?

0 投票
2 回答
7887 浏览

oracle - 在返回多行的 SQL Plus 中使用绑定变量?

这是一个愚蠢的问题,但我似乎无法解决它。我有一个在 OCI 程序中引起问题的查询,所以我想在 SQL*Plus 中手动运行它以检查那里是否有任何差异。这是查询:

我想将 comment_id 绑定到值 3052753,所以我做了以下操作:

这给出了这个错误:

现在,我已经很不高兴了,因为我不想从根本上改变这个查询,但无论如何我都会继续前进并想出这个(INTO 和 UNION 并没有那么顺利地结合在一起):

但是现在,当然因为我要返回超过 1 行,所以我得到了完全可以预测的

现在,我可以继续并开始使用游标等,但我的小查询越来越偏离其原始自我。我想做的就是检查查询是否使用该 comment_id 值运行正常。当然,我可以将 comment_id 硬编码到查询中,这样就可以了。但它在 OCI 中也可以正常工作,因此我将在 SQL*PLus 中重现我在 OCI 代码中看到的绑定变量问题。但是,为什么在 SQL*Plus 中做到这一点如此困难呢?我错过了一些非常明显的事情吗?

数据库是 Oracle 10.2.0.1.0 - 64 位,在 Red Hat Enterprise Linux ES 版本 4 (Nahant Update 8) 上运行

0 投票
2 回答
1237 浏览

sql-server - 如何规避 Sybase ASE 和 SQL Server 的最大绑定值数

我正在为表单的大型条件运行jOOQ集成测试

IN上面的示例描述了一个条件中有许多绑定变量。Oracle 在 IN 条件的括号之间有一个众所周知的限制,即 1000 个值(绑定值或内联值)。解决方法很简单,只需要写:

另一方面,Sybase ASE 15.5 和 SQL Server 2008 R8 似乎对绑定值的数量有总体限制:Sybase ASE 分别为 2000,SQL Server 分别为 2100。换句话说,似乎没有办法使用这两个数据库的绑定值来拆分/转换上述条件。除了内联所有绑定值之外,有没有办法绕过这个问题?

0 投票
1 回答
2786 浏览

ruby-on-rails-3 - 带绑定的rails activerecord插入

我在 rails 3.2.6 中使用带有 activerecords 的 mysql2 适配器

我想在进行原始插入时使用绑定变量。我不能使用常规模型,因为我正在插入到选择中。

就像是:

我是 Rails 的新手,很惊讶做到这一点有多难。我知道这不是使用模型类等的常规 rails 约定。出于性能和安全原因,我想使用绑定变量。理想情况下,我不想使用如何使用 Rails 中的动态绑定执行原始更新 sql中指定的 raw_connection