Teradata 简明教程

Teradata - Stored Procedure

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

Advantages

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

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

  3. 给出了更好的维护,因为业务逻辑已在服务器中进行测试并存储。

Creating Procedure

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

Syntax

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

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

Example

请考虑以下 Salary 表。

EmployeeNo

Gross

Deduction

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

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;

Executing Procedures

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

Syntax

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

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

Example

以下示例调用存储过程 InsertSalary 并将记录插入 Salary 表中。

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

一旦执行以上查询,它将生成以下输出,您可以在 Salary 表中看到已插入的行。

EmployeeNo

Gross

Deduction

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