在pl/sql中定义包的过程中,类型定义要写在包头里,赋值语句写在begin。。end中。
定义数组类型的方法:
TYPE TYPE_Array_S IS TABLE of NUMBER(14,4);
游标定义:
CURSOR result_cursor IS
SELECT expression FROM KEVINLLI_24 WHERE pvar1=a_exp(1) AND pvar2=a_exp(2) AND pvar3=a_exp(3) AND pvar4=a_exp(4);
游标使用前要open cursor_1;使用后close cursor_1;
判断cursor%found或者cursor%notfound时,要先FETCH result_cursor INTO v_exp_cur;
FOR result_rec IN result_cursor LOOP
print(result_rec.expression);
END LOOP ;
如上for语句中有打开游标和关闭游标的过程,所以在使用for语句前游标应该是关闭的,不然会出错误。
空字符串sub='';用length函数得不到长度的返回值,可以将空字符串赋值空格,如:sub=' ';这样可以用length函数取得长度为1;
函数或过程参数如果没有in,out属性,默认为in,所以在函数或过程中不可以给那个参数赋值,否则会出错;要给参数赋值,可以把它的属性声明为in out;如:
PROCEDURE Test_24(
a_num IN OUT TYPE_Array_S,
v_n IN OUT NUMBER,
v_expression IN OUT VARCHAR2
)
数组作为一个函数的参数时,不应该有括号;如:
ELSIF result_cursor%NOTFOUND THEN
Test_24(a_num,v_n,v_expression);--其中a_num是数组
CLOSE result_cursor;
OPEN result_cursor;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11411056/viewspace-733349/
,如需转载,请注明出处,否则将追究法律责任。