求救,如何执行多条sql???

beyondme 2003-03-05 10:01:44
我用的是oracle,

strSql="delete from a where id=1"
strSql=strSql + "\n\r" + "insert into b(id) values(2)";

但是执行不成功,是不是"\n\r"不对?
...全文
63 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dlmhtao 2003-03-05
  • 打赏
  • 举报
回复
还是是用存储过程吧,要方便很多!
agice 2003-03-05
  • 打赏
  • 举报
回复
string strSql;
strSql="insert into systemlog(syslog_id,syslog_info,syslog_name,syslog_time,syslog_note)
values(6,'6','6',to_date('2003-03-03','YYYY-mm-dd'),'')/";

试试?我也不知道成不成


beyondme 2003-03-05
  • 打赏
  • 举报
回复
string strSql;
strSql="insert into systemlog(syslog_id,syslog_info,syslog_name,syslog_time,syslog_note)
values(6,'6','6',to_date('2003-03-03','YYYY-mm-dd'),'')";
strSql=strSql + " insert into systemlog(syslog_id,syslog_info,syslog_name,syslog_time,syslog_note)
values(4,'4','4',to_date('2003-03-03','YYYY-mm-dd'),'')";

OleDbConnection OleConn=Das.GetConnect();//连接数据库
OleDbCommand OleCmd = new OleDbCommand(strSql,OleConn);
OleConn.Open();
OleCmd.ExecuteNonQuery();
OleConn.Close();


单条语句执行都没错,多条执行就说ORA-00933: SQL 命令未正确结束,加上换行或“;”也不行。
maotin 2003-03-05
  • 打赏
  • 举报
回复
把代码贴出来~~
snla 2003-03-05
  • 打赏
  • 举报
回复
strSql="delete from a where id=1";
strSql+=" insert into b(id) values(2)";
这样就行了,不用那么费劲
beyondme 2003-03-05
  • 打赏
  • 举报
回复
sql语句没问题,我在sql*plus可以执行。
flashwave 2003-03-05
  • 打赏
  • 举报
回复
对,用存储过程多方便啊,可惜oracle没有用过
Cnapollo 2003-03-05
  • 打赏
  • 举报
回复
用存储过程不就行了,郁闷个啥?
TheAres 2003-03-05
  • 打赏
  • 举报
回复
噢,我说的是Sql Server,没有看到oracle,oracle没有用过.
TheAres 2003-03-05
  • 打赏
  • 举报
回复
不需要"\r\n",用 ";"分割.
你也要验证一下是不是sql语句有问题.
Pengmg 2003-03-05
  • 打赏
  • 举报
回复
Sorry,笔误
暂时使用CommandType.Text+循环吧
Pengmg 2003-03-05
  • 打赏
  • 举报
回复
格式不是这样的,
暂时使用存储过程+循环吧
beyondme 2003-03-05
  • 打赏
  • 举报
回复
strSql如下面,在sql*plus中可以执行,
设置OleCmd.CommandType = CommandType.StoredProcedure; 就说不支持此接口

begin
insert into systemlog(syslog_id,syslog_info,syslog_name,syslog_time,syslog_note)

values(6,'6','6',to_date('2003-03-03','YYYY-mm-dd'),'');
insert into systemlog(syslog_id,syslog_info,syslog_name,syslog_time,syslog_note)

values(4,'4','4',to_date('2003-03-03','YYYY-mm-dd'),'');
end;
beyondme 2003-03-05
  • 打赏
  • 举报
回复
to:Pengmg
strSql 写成存储过程执行的格式,但是执行时不支持此接口。
Pengmg 2003-03-05
  • 打赏
  • 举报
回复
1.设置Cmd的CommandType = CommandType.StoredProcedure;//使用存储过程,
OleDbConnection OleConn=Das.GetConnect();//连接数据库
OleDbCommand OleCmd = new OleDbCommand(strSql,OleConn);
******************************************************
OleCmd.CommandType = CommandType.StoredProcedure;
//strSql 写成存储过程执行的格式
*******************************************************
OleConn.Open();
OleCmd.ExecuteNonQuery();
OleConn.Close();

2.或者你用一个比较笨的办法:循环 搞掂
如果不是大量数据,其实这对性能不会有大的影响,Example:

private OleDbConnection OleConn;//Definition

private void ...()
{
... ...
OleDbCommand OleCmd = new OleDbCommand(strSql,OleConn);
if (OleConn.State != ConnectionState.Closed)
OleConn.Open();
OleCmd.ExecuteNonQuery();
//Do not close connection !!!
}

如果是大数据量(例如电信、移动,无线监测)就需要考虑使用数据库服务期端的存储过程和客户端缓冲

3.要注意定义一个公共OleDbConnection,而且每次用完以后不要关闭连接
不要每次都创建又关闭,ADO,ADO.NET 的连接速度是很慢的,但连接以后性能就要好(例如比Delphi.BDE)

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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