Return number of rows affected by update statement

Viewed 261

How can I get number of rows affected by an update query in a procedure in snowflake

Create procedure prc_upd_tables As Begin Var stmt= "select distinct 'update' || Table || '.' || Table_schema || '.' || table_name || Set column_cd= 8 where column_cd = 4; as upd from table_name

Sample output Table1 -24 rows Table2 - 30 rows Table3 - 0 rows Table4 -73 rows

2 Answers

You can try the RESULT_SCAN and capture the count of the last query.

create table test_hk (fld1 varchar2(10));
 insert into test_hk values('12121212');
 update test_hk set fld1 = 2;
 select * from test_hk;
 SELECT $1 FROM TABLE(RESULT_SCAN(LAST_QUERY_ID(-1)));

Your sample looks oversimplified but if it's a JS stored procedure (because I see something like "var stmt="), you can use getNumRowsAffected() method of the Statement object:

https://docs.snowflake.com/en/sql-reference/stored-procedures-api.html#getNumRowsAffected

CREATE OR REPLACE PROCEDURE delete_some_rows()
RETURNS FLOAT
LANGUAGE JAVASCRIPT
AS
$$
var sql_command = "DELETE FROM deneme";
var stmt = snowflake.createStatement( {sqlText: sql_command} );
stmt.execute();
return stmt.getNumRowsAffected()
$$
;
Related