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;')