【发布时间】:2014-02-03 11:05:16
【问题描述】:
我有 oracle 存储过程,我在其中传递一个输入参数并获取一个游标作为输出参数:
CREATE OR REPLACE PROCEDURE OS_DIVISIONDDL(
p_dept_name IN VARCHAR2,
p_cursor_division OUT SYS_REFCURSOR
) IS
tmpVar NUMBER;
BEGIN
tmpVar := 0;
OPEN p_cursor_division FOR
select Division_code,
Division_name
from DIVISION_TBL
where dept_code=p_dept_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END OS_DIVISIONDDL;
/
我可以看到使用 dbms 打印的输入参数,但是服务器没有执行条件我在哪里出错了
DIVISION_CODE CHAR (10 Char)
DIVISION_NAME VARCHAR2 (30 Char)
DEPT_CODE CHAR (10 Char)
COMPANY_CODE CHAR (3 Char)
LOCATION_CODE CHAR (3 Char)
CREATED_DATE TIMESTAMP(6)
CREATED_BY VARCHAR2 (50 Char)
MODIFIED_DATE TIMESTAMP(6)
MODIFIED_BY VARCHAR2 (50 Char)
【问题讨论】:
-
能否请您提供“desc DIVISION_TBL”的结果?还是只列出所有列及其数据类型?
-
我已经编辑了帖子
-
dept_code=RPAD(p_dept_name,10);CHAR 总是填充所有分配的空间。当您对字符串进行硬编码时,比较总是正确的。 -
我确实硬编码了当我右键单击并使用输入参数执行时我能够获取数据的 where 条件我无法获取数据
-
@OracleUser 感谢您的建议,它就像一个魅力