第一次写oracle的存储过程,都快把我逼疯了

newuser2003 2005-04-28 07:28:11
问题1:这一段sp有什么错啊?硬是说“编译不通过”把我搞得莫名其妙
create or replace procedure sp_test
(id in integer,name in varchar(10))
as
begin
insert into testtable(oid,name) values(id,name);
end;

说明,tasttable是有的,并且单独执行insert语句
insert into testtable (oid,name) values(2,'n2')
一切正常

问题2:这个存储过程该怎么调用啊?
CREATE OR REPLACE procedure SP_ENTITY_GET_UNIQUE_ID
(
id_string in varchar2,
id_return out int
)
AS
begin
update SYS_TABLE_ID set NEXT_ID=NEXT_ID+STEP where tablename=id_string;
select NEXT_ID into id_return from SYS_TABLE_ID where tablename=id_string;
end;

把那句调用的exec语句告诉我。

回答以上问题者,我将不胜感激,谢谢谢谢谢谢谢谢
...全文
268 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsfww1205 2005-05-13
  • 打赏
  • 举报
回复
不管怎么样,该把帖子结了阿,做人要厚道阿!!!
newuser2003 2005-04-29
  • 打赏
  • 举报
回复
感谢各位的指教,我想我不是非要“按错误的解法去执行”而是想知道我错在哪儿
zsfww1205 2005-04-29
  • 打赏
  • 举报
回复
参数类型不能那样指定大小的,因为大小是在你的表里面限制的;
我觉得大家已经给你说得很清楚了,你按照大家说的试试看就行了;你的问题是找到正确的答案,而不是非要按你那种错误的解法去执行
leborety 2005-04-29
  • 打赏
  • 举报
回复
name in varchar(10) 改成 name in varchar


2。exec Storedprocedure(parm,parm)
yxxx 2005-04-29
  • 打赏
  • 举报
回复
错误所在:
1: name in varchar(10)
-》name in varchar
不用指定大小
2:begin
SP_ENTITY_GET_UNIQUE_ID(参数);
end;
newuser2003 2005-04-28
  • 打赏
  • 举报
回复
对于问题1,是不是参数名和表的字段名一样发生的错误?但是我试过,更改参数名,还是报错,和zsfww1205说的相比,好像数据类型写得不一样,是这个原因?
问题2,我是这么执行的:

declare intout

exec SP_ENTITY_GET_UNIQUE_ID('field1',intout);
有问题吗?为什么出错呢?
zsfww1205 2005-04-28
  • 打赏
  • 举报
回复
再pl/sql里面的sql windows 里面可以这样执行
begin
SP_ENTITY_GET_UNIQUE_ID(参数);
snd;

再sqlplus里面就是楼上的那位:
exec SP_ENTITY_GET_UNIQUE_ID(参数)
zsfww1205 2005-04-28
  • 打赏
  • 举报
回复
create or replace procedure sp_050428
(id in int ,
name in varchar2)
is
begin
insert into aabh(yh,aa) values(id,name);
end;
den_dyj 2005-04-28
  • 打赏
  • 举报
回复
1.
vaule后的参数要用变量.
2.
exec SP_ENTITY_GET_UNIQUE_ID(参数)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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