【发布时间】:2016-06-01 21:14:50
【问题描述】:
我是 oracle 新手,正在尝试使用以下 pl/sql 代码创建存储过程。
代码有什么问题?当我用硬代码值 '1605%' 替换 searchString 时,会执行查询,但不会执行变量。
create or replace PACKAGE BODY MAT_INFO AS
PROCEDURE mat_details(mat_id IN varchar, mat_cur OUT SYS_REFCURSOR) AS
searchString varchar2(700);
BEGIN
searchString := ''''||mat_id||'%''';
OPEN mat_cur FOR SELECT mi.* FROM S_JAMM_MAT_INFO mi WHERE mi.MAT_ID LIKE searchString;
END mat_details;
END MAT_INFO;
谁能帮我在这里做错了什么?
谢谢
【问题讨论】:
-
您是否尝试调试过程序,您的程序似乎没问题,需要在运行时检查值。使用 TOAD 或任何其他可以调试的工具。调试时使用 DBMS_OUTPUT.put_line (searchstring)
-
DBMS_OUTPUT.Put_Line('SELECT mi.* FROM S_JAMM_MAT_INFO mi WHERE mi.MAT_ID LIKE '|| searchString);我在输出窗口中得到以下输出:SELECT mi.* FROM S_JAMM_MAT_INFO mi WHERE mi.MAT_ID LIKE '1605310%'
-
我正在使用oracle sql developer