Oracle Unknown命令执行存储过程时出错

时间:2011-04-18 17:09:09

标签: sql oracle stored-procedures

我正在使用SQl Developer在名为CONTRACTOR_REG的包中执行过程。该程序具有以下标志。

PROCEDURE usp_ins_contractor_all(
          webid          VARCHAR2,--
          firstname      VARCHAR2,--
          lastname       VARCHAR2,--
          middlename     VARCHAR2,--
          busname        VARCHAR2,--
          townname       VARCHAR2,--
          strname        VARCHAR2,--
          strtypecd      VARCHAR2,--
          strpfxcd       VARCHAR2,--
          strsfxcd       VARCHAR2,--
          addressoverflo VARCHAR2,--
          houseno        VARCHAR2,--
          zipcd          VARCHAR2,--
          state          VARCHAR2,--
          phonenum       VARCHAR2,--
          phonenight     VARCHAR2,
          phonecell      VARCHAR2,--
          phonefax       VARCHAR2,--
          phonepager     VARCHAR2,
          licno          VARCHAR2,--
          regSite        VARCHAR2,
          licstate       VARCHAR2,--
          level_type     VARCHAR2 := 'NA',--
          type_cd        CHAR)

我正在尝试执行以下操作:

exec user1.contractor_reg.usp_ins_contractor_all('testing12345',
          'test',
          'me',
          'a',
          'testbiz',
          'DFGGH',
          'something',
          null,
          null,
          null,
          'pobox:12345',
          '45',
          '00000',
          'DF',
          '1231231231',
          '2342342344',
          '443243242',
          '111111111',
          null,
          '123123123',
          null,
          'FD',
          'NA',
          'EC')

我收到以下错误:

Error starting at line 25 in command:
          'EC')
Error report:
Unknown Command

对我来说似乎很随机,我的上一个参数有什么问题?

提前致谢!

2 个答案:

答案 0 :(得分:4)

您的回复中提到的原因可能不是错误的原因。

正如Alex在下面提到的,要将EXEC与SQLPLUS一起使用,如果你的命令跨越多行,你需要使用延续字符...

http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch12022.htm#i2697931

EXEC是一个SQLPLUS命令。当你使用..

exec p1;

在sqlplus中,它又会添加一个开始和结束块来执行你的程序...

begin
  p1;
end;
/

不确定SQL Developer是否支持此功能。我无法访问SQL Developer,但是..

您是否尝试过使用BEGIN-END执行此程序?

begin
  user1.contractor_reg.usp_ins_contractor_all('testing12345',
          'test',
          'me',
          'a',
          'testbiz',
          'DFGGH',
          'something',
          null,
          null,
          null,
          'pobox:12345',
          '45',
          '00000',
          'DF',
          '1231231231',
          '2342342344',
          '443243242',
          '111111111',
          null,
          '123123123',
          null,
          'FD',
          'NA',
          'EC');
end;
/

答案 1 :(得分:1)

显然,你不能像我一样在每个参数之间换行......愚蠢的程序......

exec user1.contractor_reg.usp_ins_contractor_all('testing12345','test','me','a','testbiz','sdfsdf','something',null,null,null,'pobox:12345', '45','00000','sdfff','1231231231','2342342344','443243242','111111111',null,'123123123',null,'sdff','E1','EC')