首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pl/sql中的ROWTYPE定义

pl/sql中的ROWTYPE定义
EN

Stack Overflow用户
提问于 2013-02-16 21:19:03
回答 2查看 3.9K关注 0票数 0

我已经编写了一个PL/SQL过程,用于比较两个表之间的数据,如果有差异,则将其打印出来,但问题是该过程的表名是动态的。以下是操作过程

代码语言:javascript
复制
create or replace PROCEDURE compareTables(
tabA IN VARCHAR2, tabB IN VARCHAR2) AS
    cur_tab_name USER_TABLES%ROWTYPE;
    lv_sql varchar2(4000);
    lv_sql2 varchar2(4000);
BEGIN
--SELECT TABLE_NAME INTO cur_tab_name FROM USER_TABLES WHERE TABLE_NAME = tabA;
lv_sql2 := 'SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME = :b_tabA';
EXECUTE IMMEDIATE lv_sql2 INTO cur_tab_name USING tabA;
    <<child>>
     DECLARE
         TYPE cursor_ref IS REF CURSOR;
         cur_comp_result cursor_ref;
         rec_comp_result cur_tab_name.TABLE_NAME%rowtype;
     BEGIN
          lv_sql := 'SELECT * FROM '||tabA||' MINUS SELECT * FROM '||tabB;
          OPEN cur_comp_result FOR lv_sql;
        LOOP
            FETCH cur_comp_result INTO rec_comp_result;
            EXIT WHEN cur_comp_result%NOTFOUND;
            DBMS_OUTPUT.PUT_LINE(rec_comp_result.empid || '' || rec_comp_result.name);
        END LOOP;
          CLOSE cur_comp_result;
     Exception 
        When others then 
                dbms_output.put_line('The Problem is '||sqlerrm); 

     END;
END compareTables;

现在的问题是,当我编译这个过程时,我得到了以下错误

代码语言:javascript
复制
Error at line 14: PLS-00310: with %ROWTYPE attribute, 'CUR_TAB_NAME.TABLE_NAME' must   name a table, cursor or cursor-variable

line 14:rec_comp_result cur_tab_name.TABLE_NAME%rowtype;

我该怎么解决它呢?

*注意:我的系统中没有安装oracle。我使用的是Oracle Apex Online tool,它使用Oracle Database 11g企业版11.2.0.3.0版和PL/SQL 11.2.0.3.0版

EN

回答 2

Stack Overflow用户

发布于 2013-02-16 21:48:21

作为测试,转到最后一行,在分号之后,按enter键。我知道Pro*C尤其会在文件末尾没有行终止符的情况下卡住。您可能会考虑到这个问题。

在你的问题范围之外考虑

代码语言:javascript
复制
SELECT columns 
FROM TABLE1

MINUS

SELECT columns
FROM TABLE2

代码语言:javascript
复制
SELECT columns
FROM TABLE2

MINUS

SELECT columns
FROM TABLE1
票数 2
EN

Stack Overflow用户

发布于 2013-02-16 22:55:52

用法:cur_tab_name.table_name。变量CUR_TAB_NAME的类型是USER_TABLE%ROWTYPE,因此它有几个字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14910756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档