`

SQL 自定函数写法|例子

 
阅读更多

自定义函数

 

用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回

用户自定义函数的类型:

标量函数:返回一个标量值

表格值函数{内联表格值函数、多表格值函数}:返回行集(即返回多个值)

1、标量函数

Create function 函数名(参数)

Returns 返回值数据类型

[with {Encryption | Schemabinding }]

[as]

begin

SQL语句(必须有return 变量或值)

End

Schemabinding :将函数绑定到它引用的对象上(注:函数一旦绑定,则不能删除、修改,除非删除绑定)

Create function AvgResult(@scode varchar(10))

Returns real

As

Begin

   Declare @avg real

   Declare @code varchar(11)

   Set @code=@scode + ‘%’

   Select @avg=avg(result) from LearnResult_baijiali

Where scode like @code

Return @avg

End

执行用户自定义函数

select 用户名。函数名 as 字段别名

select dbo.AvgResult(‘s0002’) as result

用户自定义函数返回值可放到局部变量中,用set ,select,exec赋值

declare @avg1 real ,@avg2 real ,@avg3 real

select @avg1= dbo.AvgResult(‘s0002’)

set @avg2= dbo.AvgResult(‘s0002’)

exec @avg3= dbo.AvgResult ‘s0002’

select @avg1 as avg1 ,@avg2 as avg2 ,@avg3 as avg3

函数引用

create function code(@scode varchar(10))

returns varchar(10)

as

begin

declare @ccode varchar(10)

set @scode = @scode + ‘%’

select @ccode=ccode from cmessage

   where ccode like @scode

return @ccode

end

select name from class where ccode = dbo.code(‘c001’)

2、表格值函数

a、 内联表格值函数

格式:

create function 函数名(参数)

returns table

[with {Encryption | Schemabinding }]

as

return(一条SQL语句)

create function tabcmess(@code varchar(10))

returns table

as

return(select ccode,scode from cmessage where ccode like @ccode)

b、 多句表格值函数

   create function 函数名(参数)

   returns 表格变量名table (表格变量定义)

   [with {Encryption | Schemabinding }]

as

   begin

    SQL语句

   end

多句表格值函数包含多条SQL语句,至少有一条在表格变量中填上数据值

表格变量格式

returns @变量名 table (column 定义| 约束定义 [,…])

对表格变量中的行可执行select,insert,update,delete 但select into 和 insert 语句的结果集是从存储过程插入。

Create function tabcmessalot (@code varchar(10))

Returns @ctable table(code varchar(10) null,cname varchar(100) null)

As

Begin

Insert @ctable

Select ccode,explain from cmessage

Where scode like @code

return

End

Select * from tabcmessalot(‘s0003’)

分享到:
评论

相关推荐

    绝对惊世骇俗的SQL写法

    尽管压缩包中包含了一些Excel文件,但根据标题和描述,我们可以推测这些可能是用于数据分析或SQL练习的例子,比如建设银行的旧模板和新模板,可能是用来模拟不同场景下的数据查询和处理需求。通过对比不同的模板,...

    动态拼接sql语句.rar

    然而,这样的写法存在SQL注入风险。改进的方式可以采用参数化的SQL查询,如下所示: ```易语言 .sql = "SELECT * FROM users WHERE age > ?" .参数 = .用户输入的年龄 .结果 = 执行SQLWithParams(.sql, .参数) ``` ...

    SQL注入漏洞全接触

    5. 定期审计代码,检查是否有可能导致SQL注入的不安全写法。 总的来说,SQL注入是一种严重的安全威胁,需要开发人员具备良好的安全意识,并采取适当的安全措施来保护应用程序。对于已经存在的漏洞,及时的修复和...

    sql查询99法

    根据提供的SQL查询示例,我们可以总结出一系列与SQL查询相关的知识点。这些知识点涵盖了基础的SELECT语句、条件筛选、字符串处理、数据排序等多个方面。下面将对这些知识点进行详细的解释和扩展。 ### 1. 基础...

    MySQL常用函数的举例及例子

    聚合函数通常与`GROUP BY`子句一起使用,在SQL查询中进行统计分析。 - **AVG(col)**:返回指定列的平均值。 - 示例:`SELECT AVG(price) FROM products;` - **COUNT(col)**:返回指定列中非NULL值的数量。 - 示例...

    MYSQL的存储过程和函数简单写法

    MySQL的存储过程和函数是数据库管理中强大的工具,它们允许开发者将一组SQL语句组织在一起,形成一个可重用的模块,以执行复杂的业务逻辑。这种概念类似于高级编程语言(如Java)中的函数或方法。存储过程可以接受...

    sqlserver分页的两种写法分别介绍

    自SQL Server 2005引入窗口函数后,使用`ROW_NUMBER()`函数进行分页成为更高效的选择。这种方式不仅性能更好,而且代码更易于理解。下面是一个使用`ROW_NUMBER()`的示例: ```sql CREATE PROC p_paged2 @pageStart...

    SQL 优化原则

     在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前...

    ORACLE-SQL语句优化技术分析.docx

    在应用系统开发初期,由于开发数据库数据比较少,对于查询 SQL 语句,复杂视图的编写等体会不出 SQL 语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前...

    SQL性能优化

     同一功能同一性能不同写法SQL的影响  Select * from zl_yhjbqk  Select * from dlyx.zl_yhjbqk(带表所有者的前缀)  Select * from DLYX.ZL_YHJBQK(大写表名)  Select * from DLYX.ZL_YHJBQK(中间多...

    SqlServer 2005 T-SQL Query 学习笔记(1)

    在SQL Server 2005中,T-SQL(Transact-SQL)是用于操作数据库的主要编程语言。本文主要探讨了T-SQL查询中的几个关键概念,包括`SELECT`语句、嵌套查询、多重引用、Common Table Expressions (CTE)以及如何使用CTE...

    sql 取代游标的写法示例

    在SQL编程中,游标(Cursor)是一种处理数据集合的方式,允许我们逐行处理结果集。然而,在某些情况下,游标可能不是最高效的选择,特别是当我们只需要对数据进行一次遍历并更新时。这里我们将讨论如何用单条SQL语句...

    SQL WHERE IN参数化编译写法简单示例

    因此,参数化编译写法是推荐的最佳实践。下面我们将详细讨论SQL `WHERE IN`参数化编译的正确方法。 ### 前言 在使用`WHERE IN`时,我们常常会遇到一个问题,即如何安全地传递多个参数。传统的字符串拼接方式虽然...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    sql语句like多个条件的写法实例

    总结,使用`LIKE`配合子查询和特定数据库的字符串函数(如`CHARINDEX`或`INSTR`),可以在SQL中实现根据多个条件进行字符串匹配的功能。这样的查询方法对于处理复杂的数据过滤和分析非常有效,尤其是在数据中存在...

    Oracle中PL/SQL中if语句的写法介绍

    在这个例子中,我们使用`dbms_output.put_line`函数来打印消息。 3. `END IF;`: 结束`IF`语句。 在上面的例子中,如果用户输入的数字是0、1或2,程序会检查条件并相应地打印一条消息。如果输入的数字不是0、1或2,...

    浅析SQL语句行列转换的两种方法 case…when与pivot函数的应用

    `CASE...WHEN` 和 `PIVOT` 都能实现SQL中的行列转换,但适用情况和写法有所不同。`CASE...WHEN` 更灵活,适用于简单的转换,而 `PIVOT` 更直观且方便处理复杂转换,特别是涉及多个值到多列的转换。在选择使用哪种...

    Oracle SQLServer行列转换

    在Oracle中使用`CASE`语句的方式与SQLServer类似,但需要注意Oracle中`CASE`语句的写法有所不同。例如: ```sql SELECT StuNo AS '学号', MAX(CASE WHEN Subject = '语文' THEN Score ELSE 0 END) AS '语文', ...

Global site tag (gtag.js) - Google Analytics