sql - Oracle 在 where 中使用变量

标签 sql oracle plsql

我正在尝试在 PL/SQL 过程中运行 SQL。如果我说:

SELECT * FROM myTable WHERE FNAME like 'Joe%' AND dept = 'xyz';

这会立即运行。

如果我尝试将“Joe”放入变量中,则需要永远运行,大约 3 分钟。这是我发现的一些用于使用 like 变量的语法。

PROCEDURE myProcedure(firstName IN VARCHAR,
                      cEmployees OUT cursor_type)
IS
BEGIN
     OPEN cEmployees FOR
     SELECT * FROM myTable WHERE FNAME like firstName || '%' AND dept = 'xyz';
END myProcedure;

我做错了什么?谢谢。

最佳答案

我已经有一段时间没有从事 Oracle 工作了。
但是,您可以避免这种情况

SELECT * FROM myTable WHERE FNAME like firstName || '%'

相反,请在上述语句之前设置 firstName 变量。
例如名字 = 名字 || '%'(请原谅语法)
然后SELECT * FROM myTable WHERE FNAME like firstName

关于sql - Oracle 在 where 中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3265027/

相关文章:

oracle - 从 2050 年到 1950 年的神秘变化

database - 过程中 PL/SQL 中的约束双重检查

mysql - 我应该为此创建一个索引吗?

sql - 将列名称从单独的表插入到存储过程 SELECT 语句中

php - 需要在 Bootstrap 中使用模式编辑表格的一行

sql - 如何让变量在 Oracle SQL Developer 中真正起作用?

mysql - 如何使用mysql获取最近两个月没有访问过的用户记录

sql - 查找特定记录可用的数据库

sql - PL/SQL 的替代品?是否有任何其他编程语言/IDE 组合可以为 (Oracle) SQL 查询提供自动完成和语法验证?

sql - 提取oracle中alter语句的ddl