.net 连接 oracle 数据库

2021-12-17 11:08:51 +08:00
 TmacV2

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

1358 次点击
所在节点    问与答
12 条回复
huntagain2008
2021-12-17 13:23:55 +08:00
本人非程序员。刚刚百度了下,看到了 multi_query
https://lmbtfy.cn/s/l8P7Hf1my1
Protocol
2021-12-17 13:52:35 +08:00
说实话怀疑你的程序员属性= =,首先你使用的时 ODBC 方式,进行一次查询,你放两条独立的查询语句上去,就算中间加了分号,最后返回的结果也只会是最后一句的查询结果,你理解什么叫做结果集吗
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
2021-12-17 16:04:12 +08:00
你这个语句直接用客户端跑也会报错啊
TmacV2
2021-12-17 16:23:50 +08:00
@devinww 每条查询语句后面加上; 客户端不会报错 可以返回两个查询结果集
TmacV2
2021-12-17 16:26:02 +08:00
@Protocol odbc 连接 sql server 的话 可以返回两个查询结果集 换成 oracle 返回不了
TmacV2
2021-12-17 16:26:23 +08:00
@netnr 现在就是循环组装 感谢
devinww
2021-12-17 16:27:48 +08:00
@TmacV2 客户端上面加分号是没问题的,但是程序里面一般不会一次执行两个 sql
TmacV2
2021-12-17 17:51:24 +08:00
@devinww 是别人的中间库 我要一次性把所有的表数据获取过来在程序里慢慢处理 有一个表和其他表不好关联。所以。zzz
devinww
2021-12-17 20:39:15 +08:00
@TmacV2 苦逼程序员有的时候遇到的问题都神奇葩。。
yicong135
2021-12-18 09:21:51 +08:00
换.net 的 Oracle 驱动呗,ODBC 应该不支持多条 sql 查询
TmacV2
2021-12-18 12:37:36 +08:00
@yicong135 odbc 连接 sql server 又可以 哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/822766

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX