用C#执行SQL语句出错,在PL/SQL里面却正常?
我在前台用C#生成如下的SQL语句抛到数据库中,提示出错。把SQL粘贴到PL/SQL里面执行却能正常通过,这是怎么回事啊?
SQL语句如下:
BEGIN
declare TMP_IDKEY INTEGER;
TMP_NUM INTEGER;
BEGIN
delete jzx.jzxlcxjhb where 类型='卸船' and 标志='0' and 进口船名='新万丰' and 进口航次='0816' and 箱号='CSAU5409867';
SELECT JZX.JZXLCXJHB_SEQ.NEXTVAL INTO TMP_IDKEY FROM DUAL;
insert into jzx.jzxlcxjhb(箱号,进口船名,进口航次,设定温度,设定湿度,设定通风器,是否预冷,冷冻机型,除霜间隔,货名,出口船名,出口航次,卸货港,备注,类型,标志,录入者,录入时间,确认者,确认时间,IDKEY)
values('CSAU5409867','新万丰','0816',3,33,'3','是','123','123','weq','','','','2123','卸船','0','陈钟运',sysdate,'',null,TMP_IDKEY);
select count(*) into TMP_NUM from jzx.jzxlcxzlb where 进口船名='新万丰' and 进口航次='0816' and 箱号='CSAU5409867';
if TMP_NUM>0 then
update jzx.jzxlcxzlb set 设定IDKEY=TMP_IDKEY where 箱号='CSAU5409867' and 进口船名='新万丰' and 进口航次='0816';
else
INSERT INTO jzx.jzxlcxzlb(箱号,进口船名,进口航次,设定IDKEY)
VALUES('CSAU5409867','新万丰','0816',TMP_IDKEY);
END IF;
delete jzx.jzxlcxjhb where 类型='卸船' and 标志='0' and 进口船名='新万丰' and 进口航次='0816' and 箱号='NPAU5180610';
SELECT JZX.JZXLCXJHB_SEQ.NEXTVAL INTO TMP_IDKEY FROM DUAL;
insert into jzx.jzxlcxjhb(箱号,进口船名,进口航次,设定温度,设定湿度,设定通风器,是否预冷,冷冻机型,除霜间隔,货名,出口船名,出口航次,卸货港,备注,类型,标志,录入者,录入时间,确认者,确认时间,IDKEY)
values('NPAU5180610','新万丰','0816',1,123,'123','否','33','12','qq','','','','3','卸船','0','陈钟运',sysdate,'',null,TMP_IDKEY);
select count(*) into TMP_NUM from jzx.jzxlcxzlb where 进口船名='新万丰' and 进口航次='0816' and 箱号='NPAU5180610';
if TMP_NUM>0 then
update jzx.jzxlcxzlb set 设定IDKEY=TMP_IDKEY where 箱号='NPAU5180610' and 进口船名='新万丰' and 进口航次='0816';
else
INSERT INTO jzx.jzxlcxzlb(箱号,进口船名,进口航次,设定IDKEY)
VALUES('NPAU5180610','新万丰','0816',TMP_IDKEY);
END IF;
end;
END;
C#错误提示:
ORA-06550: 第 1 行, 第 6 列:
PLS-00103: 出现符号 ""在需要下列之一时:
begin case declare exit for
goto if loop mod null pragma raise return select update while
with <an identifier> <a double-quoted delimited-identifier>
<a bind variable> << close current delete fetch lock insert
open rollback savepoint set sql execute commit forall merge
pipe
符号 "begin在 "" 继续之前已插入。
ORA-06550: 第 2 行, 第 27 列:
PLS-00103: 出现符号 ""在需要下列之一时:
begin function package pragma
procedure subtype type use <an identifier>
<a double-quoted delimited-identifier> form current cursor
SQL语句如下:
BEGIN
declare TMP_IDKEY INTEGER;
TMP_NUM INTEGER;
BEGIN
delete jzx.jzxlcxjhb where 类型='卸船' and 标志='0' and 进口船名='新万丰' and 进口航次='0816' and 箱号='CSAU5409867';
SELECT JZX.JZXLCXJHB_SEQ.NEXTVAL INTO TMP_IDKEY FROM DUAL;
insert into jzx.jzxlcxjhb(箱号,进口船名,进口航次,设定温度,设定湿度,设定通风器,是否预冷,冷冻机型,除霜间隔,货名,出口船名,出口航次,卸货港,备注,类型,标志,录入者,录入时间,确认者,确认时间,IDKEY)
values('CSAU5409867','新万丰','0816',3,33,'3','是','123','123','weq','','','','2123','卸船','0','陈钟运',sysdate,'',null,TMP_IDKEY);
select count(*) into TMP_NUM from jzx.jzxlcxzlb where 进口船名='新万丰' and 进口航次='0816' and 箱号='CSAU5409867';
if TMP_NUM>0 then
update jzx.jzxlcxzlb set 设定IDKEY=TMP_IDKEY where 箱号='CSAU5409867' and 进口船名='新万丰' and 进口航次='0816';
else
INSERT INTO jzx.jzxlcxzlb(箱号,进口船名,进口航次,设定IDKEY)
VALUES('CSAU5409867','新万丰','0816',TMP_IDKEY);
END IF;
delete jzx.jzxlcxjhb where 类型='卸船' and 标志='0' and 进口船名='新万丰' and 进口航次='0816' and 箱号='NPAU5180610';
SELECT JZX.JZXLCXJHB_SEQ.NEXTVAL INTO TMP_IDKEY FROM DUAL;
insert into jzx.jzxlcxjhb(箱号,进口船名,进口航次,设定温度,设定湿度,设定通风器,是否预冷,冷冻机型,除霜间隔,货名,出口船名,出口航次,卸货港,备注,类型,标志,录入者,录入时间,确认者,确认时间,IDKEY)
values('NPAU5180610','新万丰','0816',1,123,'123','否','33','12','qq','','','','3','卸船','0','陈钟运',sysdate,'',null,TMP_IDKEY);
select count(*) into TMP_NUM from jzx.jzxlcxzlb where 进口船名='新万丰' and 进口航次='0816' and 箱号='NPAU5180610';
if TMP_NUM>0 then
update jzx.jzxlcxzlb set 设定IDKEY=TMP_IDKEY where 箱号='NPAU5180610' and 进口船名='新万丰' and 进口航次='0816';
else
INSERT INTO jzx.jzxlcxzlb(箱号,进口船名,进口航次,设定IDKEY)
VALUES('NPAU5180610','新万丰','0816',TMP_IDKEY);
END IF;
end;
END;
C#错误提示:
ORA-06550: 第 1 行, 第 6 列:
PLS-00103: 出现符号 ""在需要下列之一时:
begin case declare exit for
goto if loop mod null pragma raise return select update while
with <an identifier> <a double-quoted delimited-identifier>
<a bind variable> << close current delete fetch lock insert
open rollback savepoint set sql execute commit forall merge
pipe
符号 "begin在 "" 继续之前已插入。
ORA-06550: 第 2 行, 第 27 列:
PLS-00103: 出现符号 ""在需要下列之一时:
begin function package pragma
procedure subtype type use <an identifier>
<a double-quoted delimited-identifier> form current cursor
...全文
相关推荐
存储过程中怎么动态执行sql语句
动态的实现表名的动态的配置及动态的配置所对应的列名
C#数据库操作实践指南:从Oracle到SQLite
C#作为一种功能强大的编程语言,广泛应用于企业级应用程序的开发中。掌握C#中的数据库操作是构建稳定、高效应用程序的关键所在。了解C#数据库操作的基本知识和最佳实践,可以帮助开发者提高代码的质量和维护性,同时也能显著提升应用性能。以下是一些C#数据库操作的最佳实践和经验总结:使用参数化查询:避免SQL注入攻击,提高查询效率。代码与数据库分离:将业务逻辑代码与数据库操作代码分离,有助于提高代码的可维护性和可测试性。错误处理。
(C#)Oracle数据库操作类(操作sql语句)
(C#)Oracle数据库操作类(操作sql语句)
Oracle教程之pl/sql简介
主要介绍了Oracle的pl/sql概念与用法,结合实例形式分析了Oracle数据库sql扩展的实现技巧,需要的朋友可以参考下
根据表名及字段,自动生成insert,update,select语句
首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2+"',"+col3+")" 可以根据表字段类型,判断是否需要拼写单引号‘’。


