许多关系型数据库管理系统(RDBMS)都支持使用CALL
语句来执行存储过程。以下是一些常见数据库系统中如何使用CALL
语句的示例。
1. MySQL
在MySQL中,可以使用CALL
语句调用存储过程。
创建存储过程:
DELIMITER $$
CREATE PROCEDURE AddNumbers(IN a INT, IN b INT, OUT result INT)
BEGIN
SET result = a + b;
END$$
DELIMITER ;
调用存储过程:
CALL AddNumbers(5, 3, @result);
SELECT @result;
2. PostgreSQL
在PostgreSQL中,可以使用CALL
语句来执行存储过程(在PostgreSQL 11及以上版本中)。
创建存储过程:
CREATE OR REPLACE PROCEDURE AddNumbers(a INT, b INT, OUT result INT)
LANGUAGE plpgsql
AS $$
BEGIN
result := a + b;
END;
$$;
调用存储过程:
CALL AddNumbers(5, 3);
3. SQL Server
在SQL Server中,可以使用EXEC
(或EXECUTE
)来调用存储过程。
创建存储过程:
CREATE PROCEDURE AddNumbers
@a INT,
@b INT,
@result INT OUTPUT
AS
BEGIN
SET @result = @a + @b;
END;
调用存储过程:
DECLARE @result INT;
EXEC AddNumbers 5, 3, @result OUTPUT;
SELECT @result;
4. Oracle
在Oracle数据库中,可以使用CALL
语句来执行存储过程,但更常见的方式是使用BEGIN ... END
块。
创建存储过程:
CREATE OR REPLACE PROCEDURE AddNumbers(a IN NUMBER, b IN NUMBER, result OUT NUMBER) AS
BEGIN
result := a + b;
END;
调用存储过程:
DECLARE
result NUMBER;
BEGIN
AddNumbers(5, 3, result);
DBMS_OUTPUT.PUT_LINE('Result: ' || result);
END;
5. IBM Db2
在IBM Db2中,可以使用CALL
语句调用存储过程。
创建存储过程:
CREATE PROCEDURE AddNumbers(IN a INT, IN b INT, OUT result INT)
BEGIN
SET result = a + b;
END;
调用存储过程:
CALL AddNumbers(5, 3, ?);
6. MariaDB
MariaDB与MySQL类似,也可以使用CALL
语句来调用存储过程。
创建存储过程:
DELIMITER $$
CREATE PROCEDURE AddNumbers(IN a INT, IN b INT, OUT result INT)
BEGIN
SET result = a + b;
END$$
DELIMITER ;
调用存储过程:
CALL AddNumbers(5, 3, @result);
SELECT @result;
总结
几乎所有主流关系型数据库系统都支持通过CALL
语句执行存储过程,尽管具体的语法和实现细节可能会有所不同。