下面的Wrt代码我不能将fetch-into-variable的类型声明为基础表的%ROWTYPE,因为SYS_REFCURSOR位于连接两个表的select上,并且还选择了几个基于两个表的属性调用的函数; 即我不能声明为L_RECORD T%ROWTYPE
---
DECLARE
P_RS SYS_REFCURSOR;
L_RECORD P_RS%ROWTYPE;
BEGIN
CAPITALEXTRACT(
P_RS => P_RS
);
OPEN P_RS;
LOOP
BEGIN
FETCH P_RS INTO L_RECORD;
EXIT WHEN P_RS%NOTFOUND;
...
EXCEPTION
WHEN OTHERS THEN
...
END;
END LOOP;
CLOSE P_RS;
END;
--------
CREATE or REPLACE PROCEDURE CAPITALEXTRACT
(
p_rs OUT SYS_REFCURSOR
) AS
BEGIN
OPEN p_rs for
select t.*,tminusone.*, f(t.cash), g(t.cash) FROM T t, TMINUSONE tminusone
where t.ticket=tminusone.ticket;
END CAPITALEXTRACT;
Run Code Online (Sandbox Code Playgroud)
当然,我不想在SYS_REFCURSOR中返回带有列的静态表R,然后声明为L_RECORD R%ROWTYPE.
因此问题是:如何声明一个弱类型SYS_REFCURSOR变量的%ROWTYPE?
为什么execute immediate 'truncate table trade_economics';在 sqlplus 脚本中会出现以下错误?
BEGIN immediate 'truncate table trade_economics'; END;
*
ERROR at line 1:
ORA-06550: line 1, column 17:
PLS-00103: Encountered the symbol "truncate table trade_economics" when
expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "truncate table trade_economics" to
continue.`
Run Code Online (Sandbox Code Playgroud)