【问题标题】:Multiple oracle queries problem多个oracle查询问题
【发布时间】:2011-07-14 10:39:32
【问题描述】:

我正在尝试从 .NET 页面运行查询,但我似乎在处理多个查询时遇到了一些问题。

我的查询与此类似

SELECT * FROM table1; SELECT * from table2

但是从 .Net 页面执行此操作时,我似乎遇到了无效字符错误。它在 SQL 开发人员中运行良好,但只有在我将其放入我的 .NET 页面时才会失败。

我已将 BEGINEND 添加到查询中,因为某些网站建议您需要它来运行多个查询,但随后出现以下错误

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()

【问题讨论】:

  • 您希望收到什么? PL-SQL 明确拒绝 SELECT 而不使用结果。
  • @grep:基本上我想将一个数据网格与一个表的结果进行数据绑定,并用另一个表的结果填充一个标签

标签: .net sql oracle multiple-tables


【解决方案1】:

如果您想从 2 个表中提取并获取一个可以填充到 DataAdapter 中的 DataSet,那么您需要使用以下方法之一:

  1. 将 2 个表连接在一起(根据您的表可能会也可能不会)
  2. 联合 2 个表(这可能适用于您的方案,也可能不适用)
  3. 编写一个存储过程,它可以创建您需要的任何结果并将其返回到引用游标中。你可以阅读如何做到这一点here

您不能只运行 2 条这样的 SQL 语句并将任何有意义的结果放入 DataSet。

【讨论】:

  • 谢谢 - 我会尝试其中一个感谢帮助:)
【解决方案2】:

很抱歉说明了明显的但是:

1.. 拨打 2 个电话

2.. 将选择放入存储过程并返回 2 个引用

这里有一个关于使用多个结果集的好链接: http://msdn.microsoft.com/en-us/library/ms971506.aspx#msdnorsps_topic13

【讨论】:

    【解决方案3】:

    如果您只需要 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 列的结果(这只是一个随机示例)

    如果两个表包含完全不同的内容,你真的应该使用两个单独的查询。

    【讨论】:

      【解决方案4】:

      一个可能的解决方案是

      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; 的引用,但仍然有问题。不过也差不多了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多