在您要使用内置的非集合函数的任何地方,都可以使用用户定义的函数。
前提条件
您必须具有函数的 EXECUTE 特权。
在 Interactive SQL 中,连接到数据库。
使用用户定义的函数执行 SELECT 语句。
例
示例 1:调用用户定义的函数 下面的函数将 firstname 字符串和 lastname 字符串串联在一起。
CREATE FUNCTION fullname( firstname CHAR(30), lastname CHAR(30) ) RETURNS CHAR(61) BEGIN DECLARE name CHAR(61); SET name = firstname || ' ' || lastname; RETURN (name); END; |
在 Interactive SQL 中执行以下语句,以从包含名字和姓氏的两列返回全名:
SELECT FullName( GivenName, Surname ) AS "Full Name" FROM Employees; |
Full Name |
---|
Fran Whitney |
Matthew Cobb |
Philip Chin |
... |
在 Interactive SQL 中执行以下语句,以使用用户定义的函数 FullName 从所提供的名字和姓氏返回全名:
SELECT FullName('Jane', 'Smith') AS "Full Name"; |
Full Name |
---|
Jane Smith |
示例 2:变量的局部声明 以下用户定义的函数阐释变量的局部声明。
尽管此函数适合于概念阐述,但在涉及多行的 SELECT 中使用时,其执行效果很差。例如,如果在某张表的查询的 SELECT 列表中使用该函数,该表包含 100000 行,其中 10000 行将被返回,则该函数将被调用 10000 次。如果在同一查询的 WHERE 子句中使用该函数,则该函数会被调用 100000 次。
Customers 表包括加拿大和美国客户。用户定义的函数 Nationality 根据 Country 列生成一个由三个字母组成的国家/地区代码。
CREATE FUNCTION Nationality( CustomerID INT ) RETURNS CHAR( 3 ) BEGIN DECLARE nation_string CHAR(3); DECLARE nation country_t; SELECT DISTINCT Country INTO nation FROM Customers WHERE ID = CustomerID; IF nation = 'Canada' THEN SET nation_string = 'CDN'; ELSE IF nation = 'USA' OR nation = ' ' THEN SET nation_string = 'USA'; ELSE SET nation_string = 'OTH'; END IF; END IF; RETURN ( nation_string ); END; |
此示例声明名为 nation_string 的变量来保存国籍字符串,使用 SET 语句来设置该变量的值,并且将 nation_string 的值返回给调用环境。
以下查询列出 Customers 表中的所有加拿大客户:
SELECT * FROM Customers WHERE Nationality( ID ) = 'CDN'; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |