我有一个表,我需要使用一个过程,如果在我正在调用的过程中命名它,将删除此表中名为module的行... 我怎么能这样做?
table1:
id number
module varchar2
PROC1:
input parameter --> module (optional)
if module exists then delete all rows in table1 named module
if module is null then truncate table1
答案 0 :(得分:0)
根据您提供的有限信息,我已根据您的要求准备了row_delete()
程序:
DELIMITER $$
CREATE PROCEDURE row_delete(
IN moduleName VARCHAR2(100))
BEGIN
DECLARE
IF moduleName == NULL THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE table1';
RETURN;
END IF;
SELECT count(module)
INTO total
FROM table1
WHERE WHERE module = moduleName;
CASE total
WHEN 0 THEN
RAISE_ERROR(-6592, 'Expecting at least one row');
WHEN when_expression_2 THEN
DELETE FROM table1 WHERE module = moduleName;
DBMS_OUTPUT.PUT_LINE( 'Removed module: ' || moduleName);
ELSE;
END CASE;
END
$$
在数据库引擎中运行此代码。 当你把这个程序叫做:
CALL row_delete('module_name');
CALL row_delete(NULL);
CALL row_delete('XYY');
包含module_name
的行将被删除。
NULL将导致截断表。
另一个值参数案例会引发异常。
谢谢。