V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
TmacV2
V2EX  ›  问与答

.net 连接 oracle 数据库

  •  
  •   TmacV2 · 2021-12-17 11:08:51 +08:00 · 1376 次点击
    这是一个创建于 1100 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前使用 ODBC 方式连接 ORACLE 数据库,遇到的问题是 sql 字符串包含 多条查询语句的时候报错 “ select * from Table1 select * from Table2 ” ,网上说。。 查询语句之前要加 分号;还有加 begin end ;或者中间不能换行。都失败了。

    12 条回复    2021-12-18 12:37:36 +08:00
    huntagain2008
        1
    huntagain2008  
       2021-12-17 13:23:55 +08:00
    本人非程序员。刚刚百度了下,看到了 multi_query
    https://lmbtfy.cn/s/l8P7Hf1my1
    Protocol
        2
    Protocol  
       2021-12-17 13:52:35 +08:00
    说实话怀疑你的程序员属性= =,首先你使用的时 ODBC 方式,进行一次查询,你放两条独立的查询语句上去,就算中间加了分号,最后返回的结果也只会是最后一句的查询结果,你理解什么叫做结果集吗
    netnr
        3
    netnr  
       2021-12-17 15:00:25 +08:00
    第一种:打开数据库连接 根据分号分隔 循环执行 ExecuteReader 再组装 DataSet

    第二种:游标

    BEGIN
    OPEN :o1 for SELECT 1,2 FROM dual;
    OPEN :o2 for SELECT 3,4 FROM dual;
    END;

    接收
    cmd.Parameters.Add("o1", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
    cmd.Parameters.Add("o2", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
    devinww
        4
    devinww  
       2021-12-17 16:04:12 +08:00
    你这个语句直接用客户端跑也会报错啊
    TmacV2
        5
    TmacV2  
    OP
       2021-12-17 16:23:50 +08:00 via iPhone
    @devinww 每条查询语句后面加上; 客户端不会报错 可以返回两个查询结果集
    TmacV2
        6
    TmacV2  
    OP
       2021-12-17 16:26:02 +08:00 via iPhone
    @Protocol odbc 连接 sql server 的话 可以返回两个查询结果集 换成 oracle 返回不了
    TmacV2
        7
    TmacV2  
    OP
       2021-12-17 16:26:23 +08:00 via iPhone
    @netnr 现在就是循环组装 感谢
    devinww
        8
    devinww  
       2021-12-17 16:27:48 +08:00
    @TmacV2 客户端上面加分号是没问题的,但是程序里面一般不会一次执行两个 sql
    TmacV2
        9
    TmacV2  
    OP
       2021-12-17 17:51:24 +08:00 via iPhone
    @devinww 是别人的中间库 我要一次性把所有的表数据获取过来在程序里慢慢处理 有一个表和其他表不好关联。所以。zzz
    devinww
        10
    devinww  
       2021-12-17 20:39:15 +08:00
    @TmacV2 苦逼程序员有的时候遇到的问题都神奇葩。。
    yicong135
        11
    yicong135  
       2021-12-18 09:21:51 +08:00
    换.net 的 Oracle 驱动呗,ODBC 应该不支持多条 sql 查询
    TmacV2
        12
    TmacV2  
    OP
       2021-12-18 12:37:36 +08:00 via iPhone
    @yicong135 odbc 连接 sql server 又可以 哈哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2605 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:10 · PVG 19:10 · LAX 03:10 · JFK 06:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.