动态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输出只有一个?如何使用任何脚本来检索受影响的实际行数?
答案 0 :(得分:0)
以下是:
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>
答案 1 :(得分:0)
您的代码应该是这样的:
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
返回“1”,那么您更新了一行 - 如果您对此不满意,请检查您的UPDATE语句。