1 sql database oracle plsql sqlplus
我需要一些SQL*Plus脚本的帮助.有没有什么方法可以让它接受一个变量,检查表是否匹配,如果它发现它退出程序而不继续其余的接受语句?
到目前为止我有这个代码:
ACCEPT p_cname PROMPT 'Enter Customer Name: '
DECLARE
v_cname CHAR(20);
BEGIN
SELECT cname INTO v_cname
FROM customer
WHERE cname = '&p_cname';
IF v_name = '&p_cname' THEN
-- Exit the program
END IF;
END;
/
-- Other ACCEPT statements if a match was not found.
Run Code Online (Sandbox Code Playgroud)
如果找到匹配项,我不希望它继续使用程序的其余部分.有没有办法做到这一点?
您可以通过启用错误检查然后引发错误来完成此操作.
ACCEPT p_cname PROMPT 'Enter Customer Name: '
WHENEVER SQLERROR EXIT SUCCESS ROLLBACK;
DECLARE
v_count INTEGER;
BEGIN
SELECT COUNT(*) INTO v_count
FROM customer
WHERE cname = '&p_cname';
IF v_count > 0 THEN
raise_application_error( -20100, 'Customer already exists' );
END IF;
END;
/
-- Issue a new WHENEVER statement here if you want different error-handling for
-- the rest of the script
-- Other ACCEPT statements if a match was not found.
Run Code Online (Sandbox Code Playgroud)
在该WHENEVER命令中,SUCCESS关键字表示SQLPlus将成功代码返回到调用它的shell.您还可以使用FAILURE返回通用故障代码或其他选项来返回特定值.