[急,疑惑]有数据读不出来!
表为:
CREATE TABLE TEST (ID0000 CHAR(10),ZWBH00 VARCHAR2(12),NAME00 VARCHAR2(20));
PL/SQL中测试执行:
CREATE OR REPLACE PROCEDURE SP_TEST
(
PI_ID0000 IN CHAR , -- 个人编号
PI_ZWBH00 IN CHAR -- 职务编号
)
IS
RT_RYXX TEST%ROWTYPE ; -- 人员信息
BEGIN
SELECT *
INTO RT_RYXX
FROM TEST
WHERE TRIM(ID0000) = TRIM(PI_ID0000) -- 个人编号
AND TRIM(ZWBH00) = TRIM(PI_ZWBH00); -- 职务编号
DBMS_OUTPUT.PUT_LINE(RT_RYXX.ZWBH00);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('EXCEPTION ERROR');
END ;
输入测试数据:
PI_ZWBH00 := '200507000482';
PI_ID0000 := '0000020783';
结果跳到: DBMS_OUTPUT.PUT_LINE('EXCEPTION ERROR');
同样:
将
PI_ID0000 IN CHAR , -- 个人编号
PI_ZWBH00 IN CHAR -- 职务编号
改为:
PI_ID0000 IN TEST.ID0000%TYPE, -- 个人编号
PI_ZWBH00 IN TEST.ZWBH00%TYPE -- 职务编号
依然跳到:DBMS_OUTPUT.PUT_LINE('EXCEPTION ERROR');
但是如果单独在:
DECLARE
RT_RYXX TEST%ROWTYPE;
PI_ID0000 TEST.ID0000%TYPE ; -- 改成为CHAR 不能读出数据,为什么?
PI_ZWBH00 TEST.ZWBH00%TYPE ; -- 同上
BEGIN
-- 赋初值
PI_ZWBH00 := '200507000482' ;
PI_ID0000 := '0000020783';
SELECT *
INTO rt_ryxx
FROM TEST -- 工伤人员信息表
WHERE trim(ID0000) = trim(PI_ID0000) -- 个人编号
AND trim(ZWBH00) = trim(PI_ZWBH00); -- 工伤事故号
DBMS_OUTPUT.put_line(rt_ryxx.ZWBH00) ;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('EXCEPTION ERROR');
END;
却可以读出结果:'200507000482'
为什么?大虾们帮帮忙啊,急.