在 oracle 的存储过程中 如何声明一个动态表的记录型变量

2024-11-05 07:58:43
推荐回答(2个)
回答1:

你只能在存储过程中使用动态的匿名块了。

比如:

create or replace procedure pro1(p_tname varchar2) is
  v_dy_sql_block varchar2(32767) ;
begin
  v_dy_sql_block := ' declare '||
                    ' l_row '||p_tname||'%rowtype ;' ||
                    '....' ;
  execute immediate v_dy_sql_block ;
end;

回答2:

1、可以这么声明:
TYPE t_StudentRecord IS RECORD(
StudentID NUMBER(5),
FirstName VARCHAR2(20),
LastName VARCHAR2(20);
/*定义t_StudentRecord 类型变量.*/
v_StudentInfo t_StudentRecord;

2、记录赋值
可以用SELECT语句向记录赋值,这将会从数据库中检索数据并将该数据存储到记录中。注意的是,记录中字段应该和查询结果列表中的字段相匹配。
SELECT studentID,firstName,lastName
into v_StudentInfo
from students where studentID=32;