从更新语句获取记录计数

时间:2019-06-18 08:04:00

标签: oracle dataset loadrunner

我有一个在Microfocus Loadrunner中运行的测试脚本。该脚本发送一个请求以更新100条记录。但是,由于重复,数据丢失等,我们经常发现更新了少于100条记录。这是预期的行为。

当我在SQL Developer或类似程序中运行查询时,出现“ 97行受影响”的情况。然后,我可以记录该数字以查找已更新的记录数。但是,Loadrunner中执行查询的命令(lr_db_executeSQLStatement)不会返回此值,而是仅返回“无数据集”。它只能从select语句返回信息。

是否有一种方法可以将select语句中的update语句“包装”起来,以返回受影响的记录数?在伪代码中,像这样;

select affectedrows from dual where query = (update table set x=y where z)

2 个答案:

答案 0 :(得分:0)

在每个DML语句之后,您可以访问游标变量SQL%ROWCOUNT,例如

DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT ||' rows affected' );

注意,SQL%ROWCOUNT属性的值是指PL / SQL中最近执行的SQL语句。您应该在DML之后直接运行这样的语句。

答案 1 :(得分:0)

您可以按如下方式使用该功能:

CREATE OR REPLACE FUNCTION UPDATE_MY_TABLE(Y IN <DATATYPE>, Z IN <DATATYPE>)
RETURN NUMBER IS
BEGIN
EXECUTE IMMEDIATE 'UPDATE <TABLE> SET X = ' || Y || ' WHERE <SOME_COL> = ' || Z;
RETURN SQL%ROWCOUNT;
END;
/

-- then call the function to update the desired value
-- using desired where condition
-- Function will return the number of rows affected

num_rows_affected := UPDATE_MY_TABLE(<update value>,<update condition value>);

我已经创建了一个小样的演示。

DB Fiddle Demo

希望,它将解决您的问题。

干杯!