oracle中删除函数,如何在Oracle函数内创建和删除表?

我有我需要删除和创建表的功能。在下面的例子中我尝试创建表,但它无法如何在Oracle函数内创建和删除表?

CREATE OR REPLACE FUNCTION DEVTEST

RETURN NUMBER

IS

COMMAND VARCHAR2(256);

ID VARCHAR2(128);

NAME VARCHAR2(128);

TMP_LIST VARCHAR2(128);

BEGIN

ID := '12345';

NAME := 'ABCdef';

TMP_LIST := 'tmpTest';

command := 'create table ' || TMP_LIST || ' (USER_ID VARCHAR2(11), USER_NAME VARCHAR2(36))';

DBMS_OUTPUT.PUT_LINE('command = ' || command);

EXECUTE IMMEDIATE command;

return 0;

END;

我调用该函数:

select NSB_DEVTEST() from dual

并且得到错误:

ORA-14552:无法执行DDL,在查询或DML中提交或回滚ORA-06512:在“DEV1_SERVER.DEVTEST”,第15行

如何更正此问题以在函数内创建/删除表?

我的服务器的详细信息:

Oracle数据库10g企业版发布10.2.0.5.0 - 64bi

PL/SQL发布10.2.0.5.0 - 生产

CORE 10.2.0.5.0生产

TNS用于Solaris:版本10.2.0.5.0 - 生产

NLSRTL版10.2.0.5.0 - 生产

2015-04-21

Barry

+0

为什么一个函数而不是一个过程? –

+0

这并不回答你的问题,但动态创建/删除表几乎总是错误的方法。你需要一个'TEMPORARY TABLE'吗? –

+0

使用过程,而不是函数 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值