Teradata 存儲(chǔ)過(guò)程

2018-01-12 15:17 更新

存儲(chǔ)過(guò)程包含一組SQL語(yǔ)句和過(guò)程語(yǔ)句。 它們可能只包含程序性聲明。 存儲(chǔ)過(guò)程的定義存儲(chǔ)在數(shù)據(jù)庫(kù)中,參數(shù)存儲(chǔ)在數(shù)據(jù)字典表中。

優(yōu)點(diǎn)

  • 存儲(chǔ)過(guò)程減少客戶端和服務(wù)器之間的網(wǎng)絡(luò)負(fù)載。

  • 提供更好的安全性,因?yàn)橥ㄟ^(guò)存儲(chǔ)過(guò)程訪問(wèn)數(shù)據(jù),而不是直接訪問(wèn)它們。

  • 提供更好的維護(hù),因?yàn)闃I(yè)務(wù)邏輯被測(cè)試并存儲(chǔ)在服務(wù)器中。

創(chuàng)建過(guò)程

存儲(chǔ)過(guò)程使用CREATE PROCEDURE語(yǔ)句創(chuàng)建。

語(yǔ)法

以下是CREATE PROCEDURE語(yǔ)句的通用語(yǔ)法。

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

例子

考慮下面的薪資表。

員工編號(hào)收入扣除凈收入
10140,0004,00036,000
10280,0006,00074,000
10390,0007,00083,000
10475,0005,00070,000

以下示例創(chuàng)建一個(gè)名為InsertSalary的存儲(chǔ)過(guò)程以接受值并插入到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;

執(zhí)行程序

存儲(chǔ)過(guò)程使用CALL語(yǔ)句執(zhí)行。

例子

以下是CALL語(yǔ)句的通用語(yǔ)法。

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

例子

以下示例調(diào)用存儲(chǔ)過(guò)程InsertSalary,并將記錄插入到“薪金表”中。

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

執(zhí)行上述查詢后,它將生成以下輸出,您可以在Salary表中看到插入的行。

員工不扣除NetPay
10140,0004,00036,000
10280,0006,00074,000
10390,0007,00083,000
10475,0005,00070,000
10520,0002,00018,000
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)