数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

ADO.NET访问Oracle 9i存储过程(上)[4]


发布日期:2018年07月29日
 
ADO.NET访问Oracle 9i存储过程(上)[4]

不返回数据的存储过程

OracleCommand 类的 ExecuteOracleNonQuery() 方法用于执行不返回任何行的 SQL 语句或存储过程该方法返回一个 int 值表示受 UPDATEINSERT 和 DELETE 命令影响的行数如果没有任何行受到影响则返回 如果您所执行的 INSERTDELETE 或 UPDATE 语句恰好影响一行则该方法具有单个参数 OracleString out rowid该参数唯一标识 Oracle 数据库中受影响的行可以使用该值来优化后续相关查询

还可以使用 OracleCommand 类的 ExecuteNonQuery() 方法来执行不返回数据的存储过程但您将无法获得上面介绍的唯一行标识符

尽管上述命令都不会返回任何数据但映射到参数的输出参数和返回值仍然使用数据进行填充这使您可以使用上述任一命令从存储过程返回一个或多个标量值

以下 Oracle 存储过程删除了由单个输入参数指定的员工的所有工作经历并且不返回任何数据

CREATE OR new PROCEDURE DELETE_JOB_HISTORY

(

p_employee_id NUMBER

)

IS

BEGIN

DELETE FROM job_history

WHERE employee_id = p_employee_id;

END DELETE_JOB_HISTORY;

以下代码运行了该存储过程

// create the connection

OracleConnection conn = new OracleConnection(Data Source=oracledb;

User Id=UserID;Password=Password;);

// create the command for the stored procedure

OracleCommand cmd = new OracleCommand();

cmdConnection = conn;

cmdCommandText = COUNT_JOB_HISTORY;

cmdCommandType = CommandTypeStoredProcedure;

// add the parameter specifying the employee for whom to delete records

cmdParametersAdd(p_employee_id OracleTypeNumber)Value = ;

OracleString rowId;

// execute the stored procedure

connOpen();

int rowsAffected = cmdExecuteNonQuery();

connClose();

ConsoleWriteLine(Rows affected: + rowsAffected);

[] [] [] [] [] [] [] []

               

上一篇:ADO.NET访问Oracle 9i存储过程(上)[1]

下一篇:ADO.NET访问Oracle 9i存储过程(上)[8]