小编Vis*_*ena的帖子

如何声明一个弱类型SYS_REFCURSOR变量的%ROWTYPE?

下面的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?

oracle plsql stored-procedures sys-refcursor rowtype

8
推荐指数
1
解决办法
2万
查看次数

在sqlplus中执行立即截断表

为什么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)

truncate sqlplus execute-immediate

2
推荐指数
1
解决办法
1万
查看次数