我正在尝试从.NET页面运行查询,但我似乎遇到了多个查询的问题。
我的查询与此类似
SELECT * FROM table1; SELECT * from table2
但是从.Net页面执行此操作时,我似乎遇到了无效的字符错误。它在SQL开发人员中运行良好,但只有在我将其放入.NET页面时才会失败。
我已将BEGIN
和END
添加到查询中,因为有些网站建议您需要此操作来运行多个查询,但后来我收到以下错误
ORA-06550:第1行第7栏: PLS-00428:此SELECT语句中需要INTO子句
任何人都可以对这一点有所了解吗?
提前致谢!
修改
这是一些代码
query = conn.CreateCommand()
query.CommandText = "SELECT * from table1; SELECT * FROM table2;"
DataSet = New DataSet()
DataAdapter = New DataAdapter(query)
DataAdapter.Fill(DataSet)
datagrid1.DataSource = DataSet.Tables(0)
datagrid1.DataBind()
lbl1.Text = DataSet.Tables(1).Rows(0).Item("column1").ToString()
答案 0 :(得分:2)
如果你想从2个表中获取并获得一个可以填入DataAdapter的DataSet,那么你需要使用以下方法之一:
你不可能只运行2个这样的SQL语句,并将任何有意义的结果带入DataSet。
答案 1 :(得分:0)
道歉但是:
1 ..拨2个电话
或
2 ..将选择放入存储过程并返回2个refcursors
这是使用多个结果集的一个很好的链接: http://msdn.microsoft.com/en-us/library/ms971506.aspx#msdnorsps_topic13
答案 2 :(得分:0)
如果您只需要table1和table2中都存在的字段,则可以执行
SELECT field1, field2, field3 FROM table1
UNION
SELECT field1, field2, field3 FROM table2
如果字段名称不同,但您可以使用相同类型的内容
SELECT tab1_id AS primary_key, tab1_name AS name, tab1_amount AS amount FROM table1
UNION
SELECT tab2_id AS primary_key, tab2_name AS name, tab2_amount AS amount FROM table2
这会给你一个带有primary_key,name,amount列的结果(这只是一个随机的例子)
如果两个表包含完全不同的内容,您应该使用两个单独的查询。
答案 3 :(得分:0)
可能的解决方案可能是
query.CommandText = "BEGIN OPEN :1 FOR SELECT * FROM table1; OPEN :2 FOR SELECT * FROM table2; END;";
...在DataSet.Load: Loading multiple tables with System.Data.OracleClient.OracleDataReader中找到...但未经过自我测试。
同时查看http://forums.asp.net/t/629511.aspx/1。它显示了如何,有点。我添加了对Oracle.DataAccess.Types;的引用,但仍然有问题。它虽然很接近。