如何编写参数化的oracle插入查询?

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

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

在这里查询我正在用存储过程计算工资并得到我的out参数工资所以我必须将它传递给我的插入查询所以我该怎么写。 如果我像所示的那样写,我会得到以下错误

 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 

请帮助我。

假设工资金额为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(); } 

Microsoft 弃用了他们的Oracle提供程序 (System.Data.OracleClient),因此请使用第三方提供程序,例如Oracle的Data Provider for .NET 。 下面的代码示例与FSX的答案基本相同,只是没有AddWithValue方法的便利。

 command.Parameters.Add(new OracleParameter("SL_NO", 1)); command.Parameters.Add(new OracleParameter("empane", "sree")); 
  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();