oracle带参数的存储过程,一直提示sql无效sql语句。求高手指点

createorreplaceprocedurecpgd_insert(sjinvarchar2;)asdeclareslnumber(10);beginselectco... create or replace procedure cpgd_insert
(
sj in varchar2;
)
as
declare sl number(10);
begin
select count(1) into sl from dba_views where view_name = 'jbftjl' and OWNER='WINE';
if sl=1 then
insert into dg_daybb (epname,gangzhong,ph,guige,rbcp,ybcp,riqi) select '纵剪机' as epname ,gangzhong,ph,guige, rbcp,ybcp,to_date(sj,'yyyy-mm-dd') as riqi from jbftjl;
end if;
end;

execute cpgd_insert ('2012-06-08');
展开
 我来答
wucui2007ah
2013-03-13 · TA获得超过120个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:126万
展开全部
对,确实是declare要删除,你的as已经代表要申明一个变量了
create or replace procedure cpgd_insert(sj in varchar2) as
sl number(10);
begin
select count(1)
into sl
from dba_views
where view_name = 'jbftjl'
and OWNER = 'WINE';
if sl = 1 then
insert into dg_daybb
(epname, gangzhong, ph, guige, rbcp, ybcp, riqi)
select '纵剪机' as epname,
gangzhong,
ph,
guige,
rbcp,
ybcp,
to_date(sj, 'yyyy-mm-dd') as riqi
from jbftjl;
end if;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
badkano
2013-03-13 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885367
团长

向TA提问 私信TA
展开全部
begin
cpgd_insert ('2012-06-08');
end;

还有个问题,你insert后没提交,所以插入不到表里
insert into 后加一句
commit;

在oracle里,insert update delete后必须提交,否则插不进数据不说 ,还会造成锁表,请牢记
更多追问追答
追问
还是提示无效sql
追答
你是在执行create 过程中报错,还是在执行
begin
cpgd_insert ('2012-06-08');
end;

的时候报错?有截图没有?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星辰大海byj
2013-03-13 · TA获得超过1020个赞
知道小有建树答主
回答量:993
采纳率:100%
帮助的人:529万
展开全部
declare 不需要
追问
刚开始没加也一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
情又独中
2013-03-13 · TA获得超过1032个赞
知道小有建树答主
回答量:1220
采纳率:100%
帮助的人:828万
展开全部
第一,你sj in varchar2 后面不应该有分号
第二,不应该有declare这个关键字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式