首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态pl/sql语法包过程

动态pl/sql语法包过程
EN

Stack Overflow用户
提问于 2013-04-25 22:06:39
回答 2查看 56关注 0票数 0

一个简单的动态pl/sql插入语句的语法问题。我的代码如下。

代码语言:javascript
复制
sql_stmt     VARCHAR2(500);

sql_stmt := 'PKG_COLLECTION.COLLECTION_INS_01(:1,:2,:3,:4,:5,:6)';
execute immediate sql_stmt using 
        IN OUT V_P1, 
        IN OUT V_P2, 
        IN OUT V_P3, 
        IN OUT V_P4, 
        IN OUT V_P5, 
        IN OUT V_P6;  

(错误: ORA-00900:无效的SQL语句)

实际的语法应该是什么样子的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-25 22:09:29

您只需将此部分更改为PL/SQL,而不是SQL:

代码语言:javascript
复制
sql_stmt := 'begin PKG_COLLECTION.COLLECTION_INS_01(:1,:2,:3,:4,:5,:6); end;';
票数 1
EN

Stack Overflow用户

发布于 2013-04-25 22:52:23

由于执行的语句不是动态的,我强烈建议您不要使用execute immediate。取而代之的是,我会使用简单的

代码语言:javascript
复制
PKG_COLLECTION.COLLECTION_INS_01(V_P1,V_P2,V_P3,V_P4,V_P5,V_P6);

它实现了相同的功能,但更简洁,如果PKG_COLLECTION.COLLECTION_INS_01的签名发生更改,则会导致无效的过程/包/函数。

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

https://stackoverflow.com/questions/16216938

复制
相关文章

相似问题

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