我要做的是,每当STORE_CODE
输入a 时,它都会检查数据库并删除商店代码。所以为此,我写了一个程序,如下所示
PROCEDURE DELETE_STORE_INFO
(
P_STORE_CODE IN NVARCHAR2
)
AS
BEGIN
UPDATE TBL_RRSOC_STORE_INFO set ISACTIVE = 'N' where STORE_CODE = P_STORE_CODE;
END DELETE_STORE_INFO;
但这里缺少的是
如果用户输入错误
store_code
并执行操作,那么它将执行什么操作。如何检查那部分?
我想COUNT
在这个阶段有些东西是行不通的。请建议
您想用它SQL%ROWCOUNT
来查明有多少行受到前一条 SQL 语句的影响:
PROCEDURE DELETE_STORE_INFO
(
P_STORE_CODE IN NVARCHAR2
)
AS
BEGIN
UPDATE TBL_RRSOC_STORE_INFO
SET ISACTIVE = 'N'
WHERE STORE_CODE = P_STORE_CODE;
IF SQL%ROWCOUNT = 0 THEN
-- DBMS_OUTPUT.PUT_LINE( 'Store code does not exist.' );
RAISE_APPLICATION_ERROR( -20000, 'Store code does not exist.' );
END IF;
END DELETE_STORE_INFO;
/
您可以使用DBMS_OUTPUT.PUT_LINE( string )
输出到 SQL 控制台(如果您从 PHP 或 Java 等外部语言调用它,那么您将看不到输出,如果您有 ,则可能不会在控制台中看到它SET SERVEROUTPUT OFF
)。
RAISE_APPLICATION_ERROR( error_code, error_message )
如果发生无效的事情,您还可以使用引发异常。
或者,您可以在OUT
参数中返回状态:
PROCEDURE DELETE_STORE_INFO
(
P_STORE_CODE IN NVARCHAR2,
O_STATUS OUT NUMBER
)
AS
BEGIN
UPDATE TBL_RRSOC_STORE_INFO
SET ISACTIVE = 'N'
WHERE STORE_CODE = P_STORE_CODE;
IF SQL%ROWCOUNT = 0 THEN
o_status := 0;
ELSE
o_status := 1;
END IF;
END DELETE_STORE_INFO;
/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句