CURSOR如下:CURSOR u_TEST IS
SELECT
ID,
NAME,
MAX(WEIGHT) WEIGHT
FROM
TEST_TABLE
WHERE
WEIGHT<= XXX
GROUP BY
ID,
NAME;
r_TEST_Rec_Row u_TEST%ROWTYPE;TEST_TABLE表结构如下:
ID VARCHAR2(3),
NAME VARCHAR2(20),
WEIGHT CHAR(6).在LOOP的时候执行FETCH u_TEST INTO r_TEST_Rec_Row ;现在出现一件奇怪的事,用DBMS_OUTPUT.PUT_LINE打印r_TEST_Rec_Row.WEIGHT长度(LENGTH)的时候,居然显示的是4000位,而打印ID或者NAME长度的时候,都是跟原表中的一致,请问各位这是什么原因,该如何解决。
SELECT
ID,
NAME,
MAX(WEIGHT) WEIGHT
FROM
TEST_TABLE
WHERE
WEIGHT<= XXX
GROUP BY
ID,
NAME;
r_TEST_Rec_Row u_TEST%ROWTYPE;TEST_TABLE表结构如下:
ID VARCHAR2(3),
NAME VARCHAR2(20),
WEIGHT CHAR(6).在LOOP的时候执行FETCH u_TEST INTO r_TEST_Rec_Row ;现在出现一件奇怪的事,用DBMS_OUTPUT.PUT_LINE打印r_TEST_Rec_Row.WEIGHT长度(LENGTH)的时候,居然显示的是4000位,而打印ID或者NAME长度的时候,都是跟原表中的一致,请问各位这是什么原因,该如何解决。
ID NAME WEIGHT
--- -------------------- ------
1 John 65kg
SQL>
SQL> create or replace procedure proc_test_length
2 as
3 CURSOR u_TEST IS
4 SELECT
5 ID,
6 NAME,
7 max(WEIGHT) WEIGHT
8 FROM
9 TEST_TABLE
10 group by id,name;
11 r_TEST_Rec_Row u_TEST%ROWTYPE;
12 begin
13 open u_test;
14 fetch u_test into r_TEST_Rec_Row;
15 dbms_output.put_line(length(r_TEST_Rec_Row.Weight));
16 close u_test;
17
18 end;
19 /
Procedure created
SQL> set serveroutput on
SQL> exec proc_test_length;
6
PL/SQL procedure successfully completed
SQL>
SELECT
ID,
NAME,
MAX(WEIGHT) WEIGHT
FROM
TEST_TABLE
WHERE
WEIGHT<= XXX
GROUP BY
ID,
NAME;
r_TEST_Rec_Row u_TEST%ROWTYPE;BEGIN
OPEN u_TEST ;
FETCH u_TEST INTO r_TEST_Rec_Row ;。
DBMS_OUTPUT.PUT_LINE(length(r_TEST_Rec_Row.Weight));打出来的结果:
4000
不知道你那里咋会打印出4000