Teradata - 存储过程


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

优点

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

  • 由于数据是通过存储过程访问而不是直接访问,因此提供了更好的安全性。

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

创建程序

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

句法

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

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

例子

考虑下面的薪资表。

员工号 总的 扣除 网络支付
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 表中。

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 表中。

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

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

员工号 总的 扣除 网络支付
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