创建 SQL 标量函数
设计数据库或开发应用程序时应创建 SQL 标量函数。封装一块可重复使用的逻辑以便可在多个应用程序的 SQL 语句或数据库对象中引用非常有用时,通常会创建 SOL 标量函数。
开始之前
关于此任务
限制
请参阅:SQL 函数限制过程
结果
示例
- 示例 1
- 以下是编译型 SQL 函数的示例:
CREATE FUNCTION GetPrice (Vendor CHAR(20), Pid INT) RETURNS DECIMAL(10,3) LANGUAGE SQL MODIFIES SQL BEGIN DECLARE price DECIMAL(10,3); IF Vendor = 'Vendor 1' THEN SET price = (SELECT ProdPrice FROM V1Table WHERE Id = Pid); ELSE IF Vendor = 'Vendor 2' THEN SET price = (SELECT Price FROM V2Table WHERE Pid = GetPrice.Pid); END IF; RETURN price; END此函数接收两个输入参数值,并根据输入参数值有条件返回单个标量值。它需要声明并使用局部变量 price 来保存要返回的值直到函数返回。
- 示例 2
- 以下示例演示包含游标、条件处理程序语句和 REPEAT 语句的编译型 SQL 函数定义:
CREATE FUNCTION exit_func(a INTEGER) SPECIFIC exit_func LANGUAGE SQL RETURNS INTEGER BEGIN DECLARE val INTEGER DEFAULT 0; DECLARE myint INTEGER DEFAULT 0; DECLARE cur2 CURSOR FOR SELECT c2 FROM udfd1 WHERE c1 <= a ORDER BY c1; DECLARE EXIT HANDLER FOR NOT FOUND BEGIN SIGNAL SQLSTATE '70001' SET MESSAGE_TEXT = 'Exit handler for not found fired'; END; OPEN cur2; REPEAT FETCH cur2 INTO val; SET myint = myint + val; UNTIL (myint >= a) END REPEAT; CLOSE cur2; RETURN myint; END@