SQL建oracle 自定义函数数

SQL自定义函数学习(一):创建标量函数
22.创建标量函数
标量函数是指函数体包含一条或多条SQL语句,这些语句以begin开始,并以end结束。创建用户自定义函数用create
function语句,而创建标量函数需要create function与begin……end一起配合使用。
22.1 创建标量函数语法
create function 名称
([{@参数名称 参数类型[=默认值]}[,n]])
returns 返回值类型
[with encryption]
return 函数返回值
22.2创建标量函数实例
要求:创建用户自定义标量函数get_weekday
语句如下:
create function get_weekday
(@date datetime)
returns int
return datepart(weekday,@date)
执行结果:
调用该函数,返回今天是一周的第几天。
select dbo.get_weekday(convert(datetime,'1))
执行结果:
注:在调用自定义标量函数时,必须指明函数的拥有者,比如本例中必须带dbo,否则不可识别。
参数名称前必须加@
returns子句固定了函数返回的类型,该类型不可为image,text,ntext等数据类型。
如果指定了with encryption,则创建函数被加密。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。当前位置: >
> sqlserver创建自定义函数--is中文字符串(判断是否为汉字)createfunctioni
sqlserver创建自定义函数--is中文字符串(判断是否为汉字)createfunctioni
XJH189 & at
sql server 创建自定义函数
  --is中文字符串(判断是否为汉字)
create function is中文字符串(@字符串 nchar(255))
returns nchar(1) as
declare @I tinyint, @J tinyint
set @I=len(@字符串)
while (@J&=@I)
if (unicode(substring(@字符串,@J,1))&256) return '否'
set @J=@J+1
return '是'
create function is学院信息表编号(@字符串 char(4))
returns nchar(1) as
if exists(select *from 学院信息表 where 编号=left(@字符串,2))
return '是'
return '否'
create function is系部信息表编号(@字符串 char(6))
returns nchar(1) as
if exists(select *from 系部信息表 where 编号=left(@字符串,4))
return '是'
return '否'
下面部分适合sqlserver 2008 之前版本会报错。和前面的是一样的功能。  --规则:4位字符,前2位为所属学院编号
create function check系部编号(@inputID varchar(30)) returns nchar(1) as begin
@out nchar='否';
if substring(@inputID,1,2) in(select 编号 from dbo.学院信息表)
@out='是';
--规则:6位字符,前4位为所属系部编号
create function check教研室编号(@inputID varchar(30)) returns nchar(1) as begin
@out nchar='否';
if substring(@inputID,1,4) in(select 编号 from dbo.系部信息表)
@out='是';
create function check检查班级课程表编号(@inputID varchar(500)) returns nchar(1) as begin
--规则:班级编号+教师编号+课程编号 不能重复
declare @inputStr varchar(500)=@inputID;
declare @temp1 varchar(8)=substring(@inputStr,1,8);
declare @temp2 varchar(6)=substring(@inputStr,9,14);
declare @temp3 varchar(6)=substring(@inputStr,15,20);
declare @out nchar(1)='否';
if @temp1 in (select 编号 from 班级信息表) and @temp2 in(select 编号 from 教师信息表) and @temp3 in(select 编号 from 课程信息表)
set @out='是';
create function check教学成绩编号(@inputID char(18)) returns nchar(1) as begin
--规则:学号(6)+教师编号(6)+课程编号(6),不能重复
declare @inputStr varchar(50)=@inputID;
declare @temp1 varchar(6)=substring(@inputStr,1,6);
declare @temp2 varchar(6)=substring(@inputStr,7,12);
declare @temp3 varchar(6)=substring(@inputStr,13,18);
declare @out nchar(1)='否';
if @temp1 in (select 学号 from 学生信息表) and @temp2 in(select 编号 from 教师信息表) and @temp3 in(select 编号 from 课程信息表)
set @out='是';
--规则:4位字符,前2位为所属学院编号
create function check系部编号(@inputID varchar(30)) returns nchar(1) as begin
@out nchar='否';
if substring(@inputID,1,2) in(select 编号 from dbo.学院信息表)
@out='是';
--规则:6位字符,前4位为所属系部编号
create function check教研室编号(@inputID varchar(30)) returns nchar(1) as begin
@out nchar='否';
if substring(@inputID,1,4) in(select 编号 from dbo.系部信息表)
@out='是';
create function check检查班级课程表编号(@inputID varchar(500)) returns nchar(1) as begin
--规则:班级编号+教师编号+课程编号 不能重复
declare @inputStr varchar(500)=@inputID;
declare @temp1 varchar(8)=substring(@inputStr,1,8);
declare @temp2 varchar(6)=substring(@inputStr,9,14);
declare @temp3 varchar(6)=substring(@inputStr,15,20);
declare @out nchar(1)='否';
if @temp1 in (select 编号 from 班级信息表) and @temp2 in(select 编号 from 教师信息表) and @temp3 in(select 编号 from 课程信息表)
set @out='是';
create function check教学成绩编号(@inputID char(18)) returns nchar(1) as begin
--规则:学号(6)+教师编号(6)+课程编号(6),不能重复
declare @inputStr varchar(50)=@inputID;
declare @temp1 varchar(6)=substring(@inputStr,1,6);
declare @temp2 varchar(6)=substring(@inputStr,7,12);
declare @temp3 varchar(6)=substring(@inputStr,13,18);
declare @out nchar(1)='否';
if @temp1 in (select 学号 from 学生信息表) and @temp2 in(select 编号 from 教师信息表) and @temp3 in(select 编号 from 课程信息表)
set @out='是';
function isChinese(@input varchar(8000)) returns nchar(1) as
declare @out
nchar(1)='是';
declare @index int=0;
declare @tempStr nchar(1);
while @index&=len(@input)
set @tempStr=substring(@input,@index,@index+2);
if unicode(@tempStr)&19968 or unicode(@tempStr)&40869
set @out='否';
set @index=@index+1;
return @out
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-sql server创建自定义函数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
sql server创建自定义函数
s​q​l​ ​s​e​r​v​e​r​创​建​自​定​义​函​数
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢
20080份文档sql server 计算列用的自定义函数为何不能建索引
[问题点数:40分,结帖人jingcg]
sql server 计算列用的自定义函数为何不能建索引
[问题点数:40分,结帖人jingcg]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 oracle 自定义函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信