Teradata 存储过程


存储过程包含一组 SQL 语句和过程语句。它们可能只包含程序语句。存储过程的定义存储在数据库中,参数存储在数据字典表中。

优点

  • 存储过程减少了客户端和服务器之间的网络负载。

  • 提供更好的安全性,因为数据是通过存储过程访问而不是直接访问它们。

  • 由于业务逻辑经过测试并存储在服务器中,因此可以提供更好的维护。

创建过程


存储过程是使用 CREATE PROCEDURE 语句创建的。

语法

以下是 CREATE PROCEDURE 语句的通用语法。

CREATE PROCEDURE <procedurename> ( [parameter 1 data type, parameter 2 data type..] ) 
BEGIN 
    <SQL or SPL statements>;
END;

例子

考虑下面的工资表。

职工号 Gross 扣除 NetPay
101 40,000 4,000 36,000
102 80,000 6,000 74,000
103 90,000 7,000 83,000
104 75,000 5,000 70,000

下面的示例创建一个名为 InsertSalary 的存储过程来接受这些值并插入到 Salary Table 中。

CREATE PROCEDURE InsertSalary ( 
    IN in_EmployeeNo INTEGER, IN in_Gross INTEGER,
    IN in_Deduction INTEGER, IN in_NetPay INTEGER
) 
BEGIN 
    INSERT INTO Salary (
        EmployeeNo,
        Gross,
        Deduction,
        NetPay
    )
    VALUES (
        :in_EmployeeNo,
        :in_Gross,
        :in_Deduction,
        :in_NetPay
    );
END;

执行程序


存储过程使用 CALL 语句执行。

语法

以下是 CALL 语句的通用语法。

CALL <procedure name> [(parameter values)];

例子

下面的示例调用存储过程 InsertSalary 并将记录插入到 Salary Table。

CALL InsertSalary(105,20000,2000,18000);

执行上述查询后,它会产生以下输出,你可以在 Salary 表中看到插入的行。

职工号 Gross 扣除 NetPay
101 40,000 4,000 36,000
102 80,000 6,000 74,000
103 90,000 7,000 83,000
104 75,000 5,000 70,000
105 20,000 2,000 18,000