【发布时间】:2015-05-27 21:55:38
【问题描述】:
我有以下 Oracle 存储过程。传入子代码或样式代码。当前如果值不为空,则更新行。我想添加逻辑以便仅在表上存在行时才进行更新,如果不存在,我喜欢打印诸如“子代码 xxxx 不存在”或“样式代码 xxxx 不存在”之类的消息。我不认为在这里合并到作品中。
create or replace PROCEDURE "REMOVE_PRICES"
(
RESULT OUT VARCHAR2
, STYLECODE_ IN NUMBER
, SUBCODE_ IN NUMBER
) AS
BEGIN
IF (SUBCODE_ is null AND STYLECODE_ is null)
THEN
raise_application_error(-20005, 'ERROR: Please provide either SUBCODE or STYLECODE!');
END IF;
IF SUBCODE_ IS NOT NULL THEN
UPDATE prices
SET type = null
WHERE subcode=SUBCODE_;
RESULT := SQL%ROWCOUNT || ' price for subcode ' || SUBCODE_ || ' is removed';
ELSIF STYLECODE_ IS NOT NULL THEN
UPDATE prices
SET type = null
WHERE stylecode=STYLECODE_;
RESULT := SQL%ROWCOUNT || ' price for stylecode ' || STYLECODE_ || ' is removed';
END IF;
END REMOVE_PRICES;
【问题讨论】:
-
你不能根据 SQL%ROWCOUNT 是零还是非零来决定显示哪条消息吗?
-
谢谢亚历克斯。我被蒙蔽了。:)
标签: stored-procedures oracle11g