执行存储过程时出现Oracle Uknown命令错误
我正在使用SQl Developer在名为CONTRACTOR_REG的包中执行过程。该程序具有以下签名。执行存储过程时出现Oracle Uknown命令错误
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
似乎真的随机给我,什么是错我的最后一个参数?
在此先感谢!
Aparently,你不能有换行符其间的每一个放慢参数,像我一样......愚蠢的计划......
EXEC user1.contractor_reg.usp_ins_contractor_all(“testing12345”,“测试”,“我”,'一','testbiz','sdfsdf','something',null,null,null,'pobox:12345','45','00000','sdfff','1231231231','2342342344','443243242', '111111111',null,'123123123',null,'sdff','E1','EC')
普通换行符在SQL * Plus或SQL Developer的'EXEC'中不起作用。但是,您可以使用延续字符('-')将命令继续到第二行;至少在SQL * Plus中,尚未在SQL Developer中进行测试。 [SQL * Plus的文档](http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch12022.htm#i2697931) – 2011-04-18 21:22:46
@alex,这其实有一个很好的理由吗?为什么不能像其他语言一样空白...... – kralco626 2011-04-19 10:58:18
这不是一个真正的语言问题,它是客户端(SQL * Plus或SQL Developer,至少)如何解释和转换您所呈现的呼叫为'EXEC ''天。如果您尝试将整个调用输入到SQL * Plus中,它会尝试在第一次返回时立即执行它,它不会等待(或需要)尾随的';'。我怀疑SQL Developer为了兼容性而复制它。根据客户是如何或受到约束,不知道是否有理由,可能是历史性的。你需要问Oracle * 8) – 2011-04-19 11:19:37
您在回复中提到的原因可能不是导致错误的原因。
亚历克斯下文提到的,使用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支持this.I不有权访问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;
/
它是一个真正的存储过程,还是一个包内的过程? – DCookie 2011-04-18 17:17:50
程序包,aorry猜我应该更清楚,我习惯于mssql。 – kralco626 2011-04-18 17:20:19