postgresql – 包含受以前DELETE影响的行数的变量? (在功能中)
我有一个用作INSERT触发器的函数.此功能删除与插入行中的[序列号]冲突的行.它精美地工作,所以我真的不会辩论这个概念的优点.
DECLARE re1 feeds_item.shareurl%TYPE; BEGIN SELECT regexp_replace(NEW.shareurl,'/[^/]+(-[0-9]+.html)$','/[^/]+1') INTO re1; RAISE NOTICE 'DELETEing rows from feeds_item where shareurl ~ ''%''',re1; DELETE FROM feeds_item where shareurl ~ re1; RETURN NEW; END; 我想添加到“通知”中,指示有多少行受到影响(又称:删除).我怎么做(使用LANGUAGE’plpgsql’)? 更新: DECLARE re1 feeds_item.shareurl%TYPE; num_rows int; BEGIN SELECT regexp_replace(NEW.shareurl,'/[^/]+1') INTO re1; DELETE FROM feeds_item where shareurl ~ re1; IF FOUND THEN GET DIAGNOSTICS num_rows = ROW_COUNT; RAISE NOTICE 'DELETEd % row(s) from feeds_item where shareurl ~ ''%''',num_rows,re1; END IF; RETURN NEW; END;
在Oracle PL / SQL中,用于存储删除/插入/更新行数的系统变量为:
SQL%ROWCOUNT 在DELETE / INSERT / UPDATE语句之后,并且在进行之前,可以将SQL%ROWCOUNT存储在类型为NUMBER的变量中.请记住,COMMIT或ROLLBACK将SQL值ROWCOUNT的值重置为零,因此必须在COMMIT或ROLLBACK之前的变量B中复制SQL%ROWCOUNT值. 例: BEGIN DECLARE affected_rows NUMBER DEFAULT 0; BEGIN DELETE FROM feeds_item WHERE shareurl = re1; affected_rows := SQL%ROWCOUNT; DBMS_OUTPUT. put_line ( 'This DELETE would affect ' || affected_rows || ' records in FEEDS_ITEM table.'); ROLLBACK; END; END; 我也发现了这个有趣的解决方案(来源:http://markmail.org/message/grqap2pncqd6w3sp)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |