【发布时间】:2020-02-07 12:29:24
【问题描述】:
我是 Oracle 新手,正在学习;我只是想运行这个 T-SQL 查询
DECLARE @SearchObj varchar(100);
SET @SearchObj='%aldbrough%';
SELECT
obj_id,
name,
description
FROM
agnis.t_object
WHERE
lower(name) = ObjToSearch ;
我正在使用 SQL Developer Oracle 工具,它还有一个“草稿编辑器”来帮助翻译 T-SQL。当我运行该工具时,它给了我这段代码
DECLARE
v_SearchObj VARCHAR2(100);
BEGIN
v_SearchObj := '%aldbrough%' ;
SELECT obj_id ,
NAME ,
DESCRIPTION
FROM agnis.t_object
WHERE LOWER(NAME) = ObjToSearch;
END;
但是同样的工具给了我这个错误
Error report -
ORA-06550: line 10, column 26:
PL/SQL: ORA-00904: "OBJTOSEARCH": invalid identifier
ORA-06550: line 6, column 4:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
那么在返回多行的 LIKE 子句中使用变量的正确语法是什么? 我希望我不必像this question 中建议的那样使用游标等简单语句
【问题讨论】:
-
至于您的另一点,您不必使用显式光标。但是您必须将结果集选择到 something 中。当您的查询返回多行 you should use an array。除非您使用 12c 或更高版本,在这种情况下您可以使用 T-SQL 样式的隐式游标,但仍然比 T-SQL 中的编码更多。 Find out more
-
感谢 = 而不是 LIKE 等,这是我复制和粘贴的坏习惯
标签: oracle oracle-sqldeveloper