【问题标题】:How to write parameterized oracle insert query?如何编写参数化的 oracle 插入查询?
【发布时间】:2012-10-10 05:41:07
【问题描述】:

我使用oracle作为我的后端,我编写插入查询如下,我不知道它是不是正确的方法,

insert into Emp_table (SL_NO,empane,empid,salaray) values(1,'sree',1002 ,:salary);

在查询中,我正在使用存储过程计算薪水并将其作为我的输出参数薪水,因此我必须将其传递给我的插入查询,这样我该如何编写。如果我像所示那样写,我会遇到以下错误

ORA-06550: line 1, column 175:
PL/SQL: ORA-00933: SQL command not properly ended
ORA-06550: line 1, column 7:
PL/SQL: SQL Statement ignored

请帮助我。

【问题讨论】:

    标签: c# oracle


    【解决方案1】:

    Microsoft deprecated their Oracle provider (System.Data.OracleClient) 所以请使用第三方提供商,例如 Oracle's Data Provider for .NET。下面的代码示例与FSX's answer基本相同,只是没有AddWithValue方法的便利性。

    command.Parameters.Add(new OracleParameter("SL_NO", 1));
    command.Parameters.Add(new OracleParameter("empane", "sree"));
    

    【讨论】:

    • 请注意,您已经编写了 'New OracleParameter' => 'n' 不应在 'new' 关键字中大写。
    • 谢谢,尼桑斯。从 VB 转换为 C#。
    【解决方案2】:

    假设工资是20000,你可以试试这个代码:

    var commandText = "insert into Emp_table (SL_NO,empane,empid,salaray) values(:SL_NO,:empane,:empid,:salary)";
    
    using (OracleConnection connection = new OracleConnection(connectionString))
    using (OracleCommand command = new OracleCommand(commandText, connection))
    {
        command.Parameters.AddWithValue("SL_NO", 1);
        command.Parameters.AddWithValue("empane", "sree");
        command.Parameters.AddWithValue("empid", 1002);
        command.Parameters.AddWithValue("salaray", 20000);
        command.Connection.Open();
        command.ExecuteNonQuery();
        command.Connection.Close();
    }
    

    【讨论】:

      【解决方案3】:
         strin sql= "insert into Emp_table (SL_NO,empane,empid,salaray) values(:SL_NO,:empane,:empid,:salary)";
          OracleCommand command = new OracleCommand(sql, connection)
          command.Parameters.Add(new OracleParameter("SL_NO", 1);
          command.Parameters.Add(new OracleParameter("empane", "sree"));
          command.Parameters.Add(new OracleParameter(("empid", 1002));
          command.Parameters.Add(new OracleParameter(("salaray", 20000));
          command.Connection.Open();
          command.ExecuteNonQuery();
          command.Connection.Close();
      

      【讨论】:

      • 添加零时出错。例如:("salary",0).. Salary 在 Oracle 中定义为 NUMBER。 @AshishModi
      猜你喜欢
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多