当前位置:首页 » 编程语言 » sql创建函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql创建函数

发布时间: 2022-01-15 08:59:30

‘壹’ sql创建个函数,参数是一个varchar型

下面写了一个!如果不满足你的需求你再问!
CREATE OR REPLACE FUNCTION FUN_CT(P_TAB VARCHAR2) RETURN VARCHAR2 AS
V_CT VARCHAR2(10);
V_SQL VARCHAR2(100);
BEGIN
V_SQL := 'select count(*) from ' || P_TAB;
EXECUTE IMMEDIATE V_SQL
INTO V_CT;
RETURN V_CT;
EXCEPTION
WHEN OTHERS THEN
RETURN P_TAB || '表不存在!';
END;

‘贰’ 用Transact-SQL语句创建一个求阶乘的函数!!!!

居然用SQL这种集合操作语言,来做类C的函数式语言的事(虽然是可以的):(


现在的老师也太无聊了,估计自己很少真正使用SQL。

/*--=============================================
--Author: Yew
--Createdate:2016-10-26
--Description: 计算阶乘

--testCode-------------
SELECTdbo.uf_Factorial(-1)
SELECTdbo.uf_Factorial(0)
SELECTdbo.uf_Factorial(1)
SELECTdbo.uf_Factorial(10)
SELECTdbo.uf_Factorial(33)--会否溢出?

----History-----------------
--=============================================*/
ALTERFUNCTIONdbo.uf_Factorial(
@N INT
)RETURNSBIGINT
AS
BEGIN
IF@N<0
RETURNNULL--RAISERROR(N'参数N不能为负')

IF@N=0
RETURN1

RETURNdbo.uf_Factorial(@N-1)*@N--递归
END

GO

‘叁’ sql 建函数

确定某年某月有多少天

实现原理:先利用DATEDIFF取得当前月的第一天,再将月份加一取得下月第一天,然后减去1分钟,再取日期的天数部分,即为当月最大日期,也即当月天数

CREATE FUNCTION DaysInMonth ( @date datetime ) Returns int
AS
BEGIN
RETURN Day(dateadd(mi,-3,DATEADD(m, DATEDIFF(m,0,@date)+1,0)))
END

‘肆’ 如何在SQL语句中使用FUNCTION

1、function是SQL的函数
是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。Microsoft® SQL Server™ 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。
可使用 CREATE FUNCTION 语句创建、使用 ALTER FUNCTION 语句修改、以及使用 DROP FUNCTION 语句除去用户定义函数。每个完全合法的用户定义函数名 (database_name.owner_name.function_name) 必须唯一。
必须被授予 CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。不是所有者的用户在 Transact-SQL 语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在 CHECK 约束、DEFAULT 子句或计算列定义中引用用户定义函数的表,还必须具有函数的 REFERENCES 权限。
在函数中,区别处理导致删除语句并且继续在诸如触发器或存储过程等模式中的下一语句的 Transact-SQL 错误。在函数中,上述错误会导致停止执行函数。接下来该操作导致停止唤醒调用该函数的语句。
用户定义函数的类型
2、Procere是SQL的存储过程
存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
存储过程是利用SQL Server所提供的Transact-SQL语言所编写的程序。Transact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的PL-SQL和 Informix的数据库系统结构中的Informix- 4GL语言。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:
1)、变量说明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程控制命令(if…else…、while….)
4)、内部函数

‘伍’ sql中什么情况下需要创建函数

一般情况都不用自己创建函数,在实际应用中创建存储过程的情况比较多,比较银行项目这些,对数据库要求比较高的

‘陆’ sql 创建函数

--测试环境mssql2008
--思路,按逗号拆分字符串再行列转换
--用CLR效果更好

--1.建表
CreatetableT
(
pkqvarchar(200)
)

--2.插入数据
insertintoTvalues('4井,0井,0井,0井,0井,0井,,,,,,,,,,')
insertintoTvalues('旷,0井,休,,,0井,0井,,,0井,,,,,,,,,,8井,4井,0井,0井,0井,0井,0井,8井,4井')
insertintoTvalues('旷,0井,休,0井,0井,0井,休,休,休,休,0井,0井,休,8井,4井')

--3.创建字符串拆分函数(用C#创建CLR函数效果会更好)
CreateFunctionf_split1(@SourceSqlVarchar(8000),@StrSeprateVarchar(2))
Returns@tempTable(idIntIdentity(1,1),colVarchar(100))
As
begin
Declare@chasVarchar(100)
Set@SourceSql=@SourceSql+@StrSeprate
While(@SourceSql<>'')
Begin
Set@ch=left(@SourceSql,Charindex(@StrSeprate,@SourceSql,1)-1)
Insert@temp(col)Values(@ch)
Set@SourceSql=Stuff(@SourceSql,1,Charindex(@StrSeprate,@SourceSql,1),'')
End
Return
End

--3.查询
select
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],
[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],
[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31]
from
(
SelectROW_NUMBER()over(orderbygetdate())ASRn,*
fromT
)Souterapplydbo.f_split1(pkq,',')
pivot
(
max(col)
foridin
(
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],
[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],
[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31]
)
)P

--4.效果

‘柒’ SQL中如何调用一个函数啊

1、首先是找到标量函数,右键单击选择新建。

‘捌’ SQL中创建一个用户自定义函数

CREATE FUNCTION DBO.tFProctsHS ( @name VARCHAR(10))
RETURNS INT --这个根据价格的类型自己修改
AS
begin
DECLARE @jiage INT;
select @jiage= jiage from 商品表 where name= @name
RETURN (@jiage)
end

--ceshi
select DBO.tFProctsHS ('记事本')

‘玖’ SQL语句定义一个函数

--a为学生表,b为成绩表,c为课程表
create function test(@id varchar(10))
returns table
return
select a.id,a.name,c.kcname,c.kcnumber,b.scores from a
left join b on b.id=a.id
left join c on c.id=a.id
where a.id=@id

这样应该对的,希望可以帮到你。

‘拾’ SQL创建用户自定义函数

楼主我只写了其中一个..基本方法都如此,希望对您有帮助,代码如下

ALTER FUNCTION [dbo].[sum]
(
@class varchar(100), --所选课程
@username varchar(20) --学生姓名
)
RETURNS int
AS
BEGIN
DECLARE @reun int
SELECT SUN(@class) FROM YOURTABLE WHERE USERNAME=@username
RETURN @reun

END