sql编写函数
❶ 在plsql中,编写一个函数,怎么编写
直接sql语句:
select wm_concat(decode(e.empno,7369,d.dname,null)),wm_concat(decode(e.empno,7369,e.ename,null)) from emp e, dept d
where e.empno in ((select e1.mgr from emp e1 where e1.empno = 7369), 7369)
and e.deptno = d.deptno
/
function :
createorreplacefunctionprint_(p_empnoinnumber)returnvarchar2is
l_resultvarchar2(100);
begin
selectwm_concat(decode(e.empno,p_empno,d.dname,null))||','||wm_concat(decode(e.empno,p_empno,e.ename,null))
intol_result
fromempe,deptd
wheree.empnoin
((selecte1.mgrfromempe1wheree1.empno=p_empno),p_empno)
ande.deptno=d.deptno;
return(l_result);
end;
测试:
SQL>selectprint_(7369)fromal;
PRINT_(7369)
--------------------------------------------------------------------------------
RESEARCH,SMITH
SQL>
❷ 如何创建sql函数
如何创建sql函数?
CREATE FUNCTION [dbo].[函数名](参数) RETURNS NVARCHAR(15) AS BEGIN END
❸ 使用SQL编写一个函数
CREATE PROC Get_Sumdays
@YYMMDD1 datetime,@YYMMDD2 datetime
AS
BEGIN
Declare @Days int
select @Days=datediff(week,@YYMMDD1,@YYMMDD2) +(case when datepart(weekday,@YYMMDD1)>1 then 0 else 1 end)-(case when datepart(weekday,@YYMMDD2)>=1 then 0 else 1 end)
PRINT @Days
END
执行存储过程:Get_Sumdays '2009-08-01','2009-08-30'
@YYMMDD1 是开始日期 @YYMMDD2是结束日期
❹ sql中如何写函数
/*
获取两个数值的大小
0:小于;1:大于;2:等于
*/
CREATE function GetMax(@qty1 varchar(50),@qty2 varchar(50))
returns int
begin
declare @Num int
if (convert(decimal(18,5),@qty1)-convert(decimal(18,5),@qty2) >0)
begin
set @Num=1
end
else if (convert(decimal(18,5),@qty1)-convert(decimal(18,5),@qty2) <0)
begin
set @Num=0
end
else
begin
set @Num=2
end
return @Num
end
❺ sql编写函数
create function count_book(@id_card int)
returns int
begin
declare @c int
select count(1) into @c from book_borrow where id_card = @id_card
return @c
end
字段名和表名根据你实际情况 修改一下。
调用就是
select dbo.count_book(11);
❻ 自己编写sql函数
create function [dbo].[Get_StrArrayStrOfIndex]
(
@str varchar(1024), --要分割的字符串
@split varchar(10), --分隔符号
@index int --取第几个元素
)
returns varchar(1024)
as
begin
declare @location int
declare @start int
declare @next int
declare @seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while @location<>0 and @index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
end
if @location =0 select @location =len(@str)+1
--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
return substring(@str,@start,@location-@start)
end
使用举例:
select id,code=dbo.Get_StrArrayStrOfIndex(code,'.',4) from code_table
❼ sql函数的编写格式是怎样的
函数的格式如下:
如下函数名为inttochar(),使用时这样:select dbo.inttochar(1234,10)
CREATE FUNCTION [dbo].[inttochar] (@int int=0, @length int=1)
RETURNS varchar(250) AS
--将@int转换成长度为@length的字符串,长度不足时加前导0
BEGIN
declare @tmp varchar(250)
select @tmp=cast(@int as varchar(250))
while len(@tmp)<@length begin
select @tmp='0'+@tmp
end
return @tmp
END
❽ SQL如何编制一个函数
create function funCharToDistinct(@char varchar(max),@splitChar varchar(1000))
returns varchar(max)
as
begin
declare @returnChar varchar(max) select @returnChar=''
while(charindex(@splitChar,@char)>0)
begin
select @returnChar=@returnChar+ left(@char,charindex(@splitChar,@char))
select @char=replace(@char,left(@char,charindex(@splitChar,@char)),'')
end
return (@returnChar)
end
go
--TEST:
declare @char varchar(max) select @char='a;a;b;c;d;b;c;'
select dbo.funCharToDistinct(@char,';')
输出结果:
-----------
a;b;c;d;
(1 行受影响)
❾ sql server数据库编写自定义函数
如果只是单纯的把两个字段拼接起来没必要写自定义函数,查询语句就可以实现
select FirstName,LastName,FirstName+LastName FullName from EMPLOYEE
FullName是合并后的字段
❿ sql server 函数编写
函数如下:
createfunctiondbo.test(@snvarchar(max))
returnsnvarchar(max)
as
begin
declare@idxint,@spiltCharnvarchar(10),@vnvarchar(max)
declare@tbtable(txtnvarchar(max),order_idxintidentity(1,1))
select@spiltChar=';',@idx=1
while@idx>0
begin
set@idx=charindex(@spiltChar,@s)
if@idx>0
begin
set@v=left(@s,@idx-1)
set@s=right(@s,len(@s)-@idx)
insertinto@tb(txt)
select@v
where@v!=''andnotexists
([email protected]=@v)
end
else
begin
insertinto@tb(txt)
select@s
where@s!=''andnotexists
([email protected]=@s)
end
end
set@v=''
select@v=@v+s.txt+';'
from@tbs
orderbys.txt
return@v
end
go
调用:
selectdbo.test('a;a;b;c;d;b;c;')