oracle plsql 数据类型 var,在DBSMS_SQL.DEFINE_column oracle 12C中提供列数据类型

我必须在以下两个条件下将数据从一个表复制到另一个表

需要一次复制一条记录,以便在需要时对列值进行修改

我已经创建了一个过程来通过动态查询来实现这一点。由于列列表未知,我无法声明rowtype变量。我看到了一个DBMS_SQL示例,您可以在其中定义select子句的列。以下是格式

DBMS_SQL.DEFINE_COLUMN(cursor_var,position,column_var);

下面只是一个示例代码

CREATE OR REPLACE PROCEDURE pr_test (P_TABLE_NAME IN VARCHAR2)

IS

V_SQL VARCHAR2(500);

SRC_CUR INT;

DEST_CUR INT;

TYPE COL_DTL_TYPE IS RECORD

(

COLUMN_ID INT,

COLUMN_NAME VARCHAR2(250),

DATA_TYPE VARCHAR2(250),

DATA_LENGTH INT

);

COL_DTL_REC COL_DTL_TYPE;

TYPE TBL_COL_LIST_TYPE IS TABLE OF COL_DTL_TYPE;

TBL_COL_LIST TBL_COL_LIST_TYPE;

V_CNT INT := 0;

BEGIN

V_SQL := 'SELECT * FROM ' || P_TABLE_NAME;

SRC_CUR := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(SRC_CUR,V_SQL,DBMS_SQL.NATIVE);

TBL_COL_LIST := TBL_COL_LIST_TYPE();

FOR COL_DTL_REC IN (

SELECT COLUMN_ID,COLUMN_NAME,DATA_TYPE,DATA_LENGTH

FROM ALL_TAB_COLUMNS WHERE TABLE_NAME =P_TABLE_NAME

)

LOOP

V_CNT := V_CNT + 1;

TBL_COL_LIST.EXTEND;

TBL_COL_LIST(V_CNT) := COL_DTL_REC;

-- Here is where I am stuck and not able to give column data type

DBMS_SQL.DEFINE_COLUMN(SRC_CUR,V_CNT,COL_DTL_REC.COLUMN_NAME COL_DTL_REC.DATA_TYPE , COL_DTL_REC.DATA_LENGTH)

END LOOP;

END;

稍后将复制到目标表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值