例如执行select 1 from dual;
这样执行是没问题的对把?
但我用.net的System.Data.OracleClient.OracleConnection链接数据库,执行这样的command为什么报字符无效,
为什么一定要把分号去掉才型,oracle不是都以分号结束的嘛?另外我想返回多个结果级。例如
select 1 from dual;
select 2 from dual;
这样是否可行,不行的话又该怎么写呢?我想返回2个结果集然后赋给DataSet谢谢指教!

解决方案 »

  1.   

    在sql plus里是以分号结束的
      

  2.   

    select 1 from dual
    union 
    select 2 from dual
      

  3.   

    1.不是必须以分号结尾。具体看你的编译器。比如在sqlplus中,以分号或/结尾都行。而在toad中,即使什么结束符都不要,也能执行。你要看看你的.net是怎么要求的;2.想要一段序列,可如下操作:
    OPER@TL>select rownum from dual
      2  connect by rownum<11;    ROWNUM
    ----------
             1
             2
             3
             4
             5
             6
             7
             8
             9
            1010 rows selected.OPER@TL>
      

  4.   

    1.你是通过其它开发语言把SQL拼成字符串传给数据库,是不需要';'的.
    2.一条select语句返回的是一个数据集,你可以把返回到前端的数据集进行处理,.net有相关方法的.
      

  5.   

    1.你是通过其它开发语言把SQL拼成字符串传给数据库,是不需要';'的. 
    2.一条select语句返回的是一个数据集,你可以把返回到前端的数据集进行处理,.net有相关方法的.
      

  6.   

    谢谢楼上的,那如果我想返回2个结果集该怎么写呢?select 和 select 之间用什么符号分隔呢?如果我这样
    select 1 from dual; 
    select 2,3 from dual; 
    会报字符无效这样写
    select 1 from dual 
    select 2,3 from dual
    未结束的sql该怎么办啊!
      

  7.   

    .net中,给个例子:sqlstr1 = "select 1 from dual";sqlstr2 = "select userid,username from customer where loginid='" + tbUid.Text + "' and password= '" + tbPwd.Text + "'";
      

  8.   

    两个结果集?
    一次只能发送一条SQL,你可以在前端作个变量,来存放select 1 from dual和select 2,3 from dual这两条语句,
    然后传入方法,返回结果再处理.
      

  9.   


    你的意思是要执行2次数据库查询吗?我想一次查询就返回2个结果集,然后赋给DataSet
    例如
    DataSet ds = this.SessionInstance.OracleHelper.ExecuteDataSet(SQL, CommandType.Text);但会报错,不知道该怎么写,但在mssql中是可以这样写的?
      

  10.   

    plsql才已分号结束,代表plsql块。块就要有begin 和 end;,所以建议你写成
    select 1 from dual select 1
      from dual
    union
    select 2 from dual