能否在sql的执行语句中使用pl/sql块,环境server 2003+vs.net+oracle8i,关注!在线等待...
string sql_code="declare";
sql_code+="v_wzrnum number(10);";
sql_code+="begin ";
sql_code+="SELECT wzrsequen.NEXTVAL INTO v_wzrnum FROM dual;";
sql_code+="insert into wzwwzr(wzr_sn,zjlx,zjhm,xm,dwzz,wzrlb) values(v_wzrnum,'1','11111111111111','go','here','0');";
sql_code+="end if;";
sql_code+="end;";
ExecuteNoQuery_Trans(sql_code,Page);
用单个sql语句执行上面的函数没有问题,一但执行pl/sql块就不行了,
错误:
运行时间错误,是否要调试;
行:0
错误:缺少")"
但我将上面的pl/sql在sqlplus 里执行没问题的,难道vs.net不支持
对oracle的这种操作(注:语法没问题),在线等待...
问题点数:100、回复次数:11Top
1 楼wkb2002(吴可)回复于 2003-09-02 19:41:55 得分 0
贴错了,这一句没有的 sql_code+="end if;";Top
2 楼wkb2002(吴可)回复于 2003-09-02 20:01:13 得分 0
顶一下Top
3 楼wkb2002(吴可)回复于 2003-09-02 21:25:38 得分 0
不等了,睡觉去了,什么事啊Top
4 楼sqhua(拉长弓兮射天狼)回复于 2003-09-03 12:04:38 得分 0
为什么不写成存储过程再调用呢?Top
5 楼wkb2002(吴可)回复于 2003-09-03 17:26:28 得分 0
现在有这个想法,只是要传的参数会很多的,麻烦了一点,能不能给个调用带传入传出参数存储过程的列子啊,详细一点啊,我下午试了,还是会报上面的错,就是没执行成功的,谢谢Top
6 楼tiro01()回复于 2003-09-03 17:43:42 得分 50
干吗要用变量?直接用如下语句不就可以了
insert into wzwwzr(wzr_sn,zjlx,zjhm,xm,dwzz,wzrlb)
values(wzrsequen.NEXTVAL ,'1','11111111111111','go','here','0');Top
7 楼wkb2002(吴可)回复于 2003-09-03 18:06:11 得分 0
这道也是,不过我要查找好几个表还要做插入,更新操作,在Vs.net 里不怎么方便,比如判断是否已存在含有该字段的尽量,如果存在就放弃这个操作,而且这样的操作有多个,有没有好的方法啊Top
8 楼wkb2002(吴可)回复于 2003-09-04 15:16:42 得分 0
to tiro01
insert into wzwwzr(wzr_sn,zjlx,zjhm,xm,dwzz,wzrlb)
values(wzrsequen.NEXTVAL ,'1','11111111111111','go','here','0');
我接着又new了一个oledbcommand(Sql_Code_jsy,OleDbConnection1,MyTransaction)
insert into wzyjsy(jsy_sn,dqjf,jszzl,jszzt,fzjg,jzrq,nzrq,zdbz) values(wzrsequen.CURRVAL,......)
结果提示:ORA-08002: 序列wzrsequen.CURRVAL 尚未在此进程中定义Top
9 楼YAOTIEBING(寻找失去的自我)回复于 2003-09-21 14:33:19 得分 0
wzrsequen.CURRVAL 需要 单引号 考起来Top
10 楼wkb2002(吴可)回复于 2003-09-22 14:26:17 得分 0
wzr_sn 是number,wzrsequen.CURRVAL没有问题,顶again!Top
11 楼LineCorner()回复于 2003-09-22 14:31:54 得分 50
up!up!Top



