怎么样在存储过程中调用存储过程?

Caobiao 2003-10-19 04:26:43
我这样子写怎么不行?
create or replace procedure Cp_UserCallOutFinish
is
begin
...
exec c_test.cp_calloutcount;
...
end Cp_UserCallOutFinish;
但是我在SQL plus中运行
exec c_test.cp_calloutcount;又能通过?
谢谢!·
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tolywang 2003-10-20
  • 打赏
  • 举报
回复
举个例子给你吧 . 两个存储过程在同一个用户mis下, (建立同义词后可以不用写用户):

CREATE OR REPLACE PROCEDURE MIS.CHECK_SMT_EMP_LIGHT (STATION_NUM in varchar2,MACHINE in varchar2,
PPN in varchar2,VER in varchar2,DATA in varchar2,
LOC in varchar2,KPN in varchar2,SN in varchar2,
Line in varchar2,RES out varchar2) IS

C_EMP_ID VARCHAR2(25);
C_OUTPUT varchar2(64);
BEGIN

SELECT EMP_NO INTO C_EMP_ID
FROM SFIS1.C_EMP_DESC_T
WHERE EMP_NO = DATA AND ROWNUM = 1;

RES:='OK LIGHT={ON}';
MIS.delete_smt_error('SMT',machine,Line); // 引用另一个存储过程

exception

when NO_DATA_FOUND then
RES:='LIGHT={ON} NO EMP';
C_OUTPUT :=RES || ' - ' || DATA;

END;
/
ningIII 2003-10-19
  • 打赏
  • 举报
回复
execute immediate ......
ATCG 2003-10-19
  • 打赏
  • 举报
回复
因为exec 是sql*plus 命令而不是sql语句,所以不能写在PL/SQL块中
guangyinsuipian 2003-10-19
  • 打赏
  • 举报
回复
在存储过程中好像不能用数据定义语言底吧,create table之类的都不行。你只能像函数一样调用他

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧