跳轉到內容

SQL 方言參考/過程式語言/儲存過程

來自華夏公益教科書,開放的書籍,為開放的世界

儲存過程

[編輯 | 編輯原始碼]
資料庫 建立語法 呼叫
DB2
CREATE PROCEDURE procedure_name(...)
   BEGIN
   /* SQL code */
   END
CALL procedure_name(...)
Firebird
SET TERM $$ ;

CREATE PROCEDURE nameprocedure
  (input_parameter_name datatype, ... ) 
RETURNS 
  (output_parameter_name datatype, ... )
AS 
DECLARE VARIABLE variable_name datatype;
BEGIN
  /* SQL code */
END$$

SET TERM ; $$
SELECT ... FROM function_name(...)
EXECUTE function_name(...)
MonetDB
CREATE [ OR REPLACE ] PROCEDURE procedure_name(...)
BEGIN
   /* SQL code */
END


CREATE [ OR REPLACE ] PROCEDURE procedure_name(...)
EXTERNAL NAME  MAL_procedure_name
CALL procedure_name(...)
MySQL
DELIMITER $$

CREATE PROCEDURE nameprocedure
  (input_parameter_name datatype, ... )
BEGIN
  /* SQL code */
END$$

DELIMITER ;
CALL nameprocedure(...)
Linter
CREATE [OR REPLACE] PROCEDURE procedure_name([IN/OUT/INOUT] parameter_name datatype, ...) [RESULT datatype] [FOR DEBUG]
   DECLARE 
   /* variables declaration */
   CODE
   /* stored procedure code 
      (including SQL code)*/
   EXCEPTIONS
   /* exceptions declarations */
   END
CALL procedure_name(...)

EXECUTE procedure_name(...)

EXECUTE procedure_name(...) AS OWNER

SELECT procedure_name(...)
FROM ...
WHERE
procedure_name(...) = ...
OpenLink Virtuoso
Oracle
CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ]
IS
    [declaration_section]
BEGIN
    executable_section
    [EXCEPTION
        exception_section]
END [procedure_name];
CALL [PACKAGE_NAME.]procedure_name(...);

BEGIN
  [PACKAGE_NAME.]procedure_name(...);
END;
  • EXEC[ute] 是另一個(客戶端)選項,它由一些 Oracle 客戶端實現:[1]
  • CALL 語法無法傳遞 BOOLEAN 和其他 PL/SQL 專用型別:[1]
PostgreSQL
CREATE FUNCTION function_name
  (input_parameter_name datatype, ...)
RETURNS return_type
AS $$
DECLARE
  variable_name datatype;
BEGIN
  /* SQL code */
END;
$$ LANGUAGE plpgsql;
SELECT function_name(...)
SQL Server
CREATE PROCEDURE nameprocedure
  (input_parameter_name datatype, ... )
AS
  /* SQL code */
GO
EXEC nameprocedure(...)
SQLite

N/A

N/A

  1. a b 關於 SQL*Plus 和其他客戶端中 CALL 與 EXEC[ute] 命令的討論。
華夏公益教科書