检索更新的行数
Retrieve number of rows updated
低于动态 SQL 正在更新 1319 行。
l_sql := 'UPDATE '||l_prefix||'CRS_CUSTOMERS SET CUSTOMER_SOURCE_REF_ID = :REF_ID EXECUTE IMMEDIATE l_sql USING i.CUSTOMER_REF_ID, i.CUSTOMER_ID;
TO_CHAR(SQL%ROWCOUNT);
rowcount 输出只是一个?我如何使用任何脚本来检索受影响的实际行数?
方法如下:
SQL> declare
2 l_sql varchar2(200);
3 l_cnt number;
4 begin
5 l_sql := 'update emp set comm = 100 where deptno = 20';
6 execute immediate 'begin ' || l_sql ||'; :x := sql%rowcount; end;' using out l_cnt;
7 dbms_output.put_line('Updated ' || l_cnt || ' rows');
8 end;
9 /
Updated 5 rows
PL/SQL procedure successfully completed.
SQL>
你的代码应该是这样的:
l_sql := 'UPDATE '||l_prefix||'CRS_CUSTOMERS SET CUSTOMER_SOURCE_REF_ID = :REF_ID';
EXECUTE IMMEDIATE l_sql USING i.CUSTOMER_REF_ID, i.CUSTOMER_ID;
dbms_output.put_line('Updated ' || SQL%ROWCOUNT || ' rows');
但是,它不会工作,因为您只指定了一个绑定变量 (:REF_ID
),但您提供了两个值(i.CUSTOMER_REF_ID
和 i.CUSTOMER_ID
)。绑定变量和值必须匹配。
如果 SQL%ROWCOUNT
returns “1”,那么您更新了一行 - 如果您对此不满意,请检查您的 UPDATE 语句。
低于动态 SQL 正在更新 1319 行。
l_sql := 'UPDATE '||l_prefix||'CRS_CUSTOMERS SET CUSTOMER_SOURCE_REF_ID = :REF_ID EXECUTE IMMEDIATE l_sql USING i.CUSTOMER_REF_ID, i.CUSTOMER_ID;
TO_CHAR(SQL%ROWCOUNT);
rowcount 输出只是一个?我如何使用任何脚本来检索受影响的实际行数?
方法如下:
SQL> declare
2 l_sql varchar2(200);
3 l_cnt number;
4 begin
5 l_sql := 'update emp set comm = 100 where deptno = 20';
6 execute immediate 'begin ' || l_sql ||'; :x := sql%rowcount; end;' using out l_cnt;
7 dbms_output.put_line('Updated ' || l_cnt || ' rows');
8 end;
9 /
Updated 5 rows
PL/SQL procedure successfully completed.
SQL>
你的代码应该是这样的:
l_sql := 'UPDATE '||l_prefix||'CRS_CUSTOMERS SET CUSTOMER_SOURCE_REF_ID = :REF_ID';
EXECUTE IMMEDIATE l_sql USING i.CUSTOMER_REF_ID, i.CUSTOMER_ID;
dbms_output.put_line('Updated ' || SQL%ROWCOUNT || ' rows');
但是,它不会工作,因为您只指定了一个绑定变量 (:REF_ID
),但您提供了两个值(i.CUSTOMER_REF_ID
和 i.CUSTOMER_ID
)。绑定变量和值必须匹配。
如果 SQL%ROWCOUNT
returns “1”,那么您更新了一行 - 如果您对此不满意,请检查您的 UPDATE 语句。