Ⅰ sql 自定義的函數三種,有達人能給我3個事例順便講解下區別么。
1)標量函數求三個數中的最大值
create function func_max(@x int,@y int,@z int)
returns in
as
begin
if @x<@y
if @y<@z set @x=@z;
else @x=@y;
else
if @y<@z
if@x<@z set @x=@z;
return @x;
end;
2)內聯表值函數
create function func_find(@a int)
returns table
as
return(select * from test where a=@a)
3)多語句表值函數
create function func_find1(@sex char(2))
returns @func_find1 table(
sno int,
sname varchar(10),
sex char(2)
)
as
begin
insert into func_find1
select S.sno,S.sname,S.sex from S where S.sex=@sex
return
end
區別:
標量函數返回在returns自居中定義的類型的單個數據值,可以使用標量數據類型(包括bigint和sql_variant)。
內聯表值函數沒有函數主體,表是單個select語句的結果集。
多語句表值函數,在begin。。end塊中定義的函數主體包含SQL語句,這些語句可生成行並將行插入將返回的表中。其中的語句不能有任何副作用。
Ⅱ VB 中 SQL 怎麼使用 自定義函數
方法1:將這個函數加到SQL伺服器上。
方法2:先取欄位原始值,再用你的函數處理這個值。
Ⅲ 請教SQL自定義函數返回的例子
有記錄的話會輸出 學號,姓名,性別,課程名稱,成績,如果返回時空,在後台代碼做判斷吧
用的是mysql
delimiter
$$
create
function
name_of_function(kc
varchar(10))
//kc
課程名稱
return
char(8)
begin
//現在比如你傳的參數是會計
return
(
select
ST.學號,ST.姓名,ST.性別
,SC.課程名,SC.成績
from
st
ST
left
join
(select
S.學號,S.成績,C.課程名
from
s
S
left
join
c
C
on
S.課程號
=
C.課程號
and
C.課程名
=
'會計')
SC
on
st.學號
=
SC.學號
;
);
end$$
demiliter;
Ⅳ 資料庫自定義函數,判斷參數,生成不同的sql語句,返回數據
Return被定義為返回int.
當SType=21 @aaa存的是sql語句, 當然報錯
當SType=22@aaa存的sql執行結果, Stock_id
Ⅳ sql怎麼使用自定義函數來查詢
用游標: declare @變數1 varchar(50),@變數2 varchar(50) -----創建游標 declare mycurs cursor for select 欄位A,欄位B from table1 open mycurs-----打開游標 fetch next from mycurs into @變數1,變數2 while @@fetch_Status=0--循環游標 begin ---循環處理 fetch next from mycurs into @變數1,變數2 end close mycurs Deallocate mycurs 我說的可能不好,你自己去可以看看游標的相關資料。
Ⅵ SQL自定義函數的創建(給定班級號,統計該班級男女生數量)
CREATE FUNCTION dbo.fn_stucount (@classno nvarchar(20))
RETURNS TABLE
AS
RETURN
(
select a.sex,count(*)數量 from student a,class b where a.sno=b.sno and b.classno=@classno
group by a.sex
);
Ⅶ 用SQL函數判斷是否有效18位身份證號
判斷是不是18位
if (len(@snid)<> 18) or (isnull(@snid,'')='')
goto ext
第七位、第八位不是19 或者 20
if not ((substring(@snid,7,2)='19') or (substring(@snid,7,2)='20'))
goto ext
判斷前17位是否都是數字
select @i=1,@id_num='',@sn_sum=0,@sn_Last=''
while @i<18
begin
Ⅷ 用SQL語言,創建一個用戶自定義函數,判斷一個數是否能被5和7同時整除
CREATE
FUNCTION
F2(@數
INT)
RETURNS
VARCHAR(20)
AS
BEGIN
DECLARE
@結果
VARCHAR(20)
IF
@數
%
5=0
AND
@數
%
7=0
SET
@結果='可以被5和7
整除
'
ELSE
SET
@結果='不能被5和7整除'
RETURN
@結果
END
GO
select
dbo.F2(20),dbo.F2(35)
Ⅸ 利用sql 寫一個正則表達式 判斷 是否為手機號碼 11 位 + 數字... 變數@TelNo
我的想法和下面位朋友差不多,但是可以直接用:
在數據表中加需要約束的那一列的一個約束就行了!表達式如下:
where
([列名]
like
'13[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
注釋:[0-9]代表是選任一一個0-9中的數字作為當前位的數字。希望能對你有所幫助和啟發。
Ⅹ 用T-SQL自定義函數,創建標量值函數 判斷一一個數是否為正數,是輸出positive
很簡單,但是以後最好能認真點, 首先你問問提至少要帶個請字吧,大學老師留的課題你直接抄過來就完事了?
給你說最後一個
create function f_tableinfo
(
@tableName nvarchar(200)
)
returns @result table (
ColName nvarchar(200),
ColType nvarchar(200),
ColLength int,
ColIsNull bit
)
as
begin
insert into @result(ColName,ColType,ColLength,ColIsNull)
select
c.[name] as ColumnName,
t.[name] as ColumnType,
c.max_length as MaxLength,
c.is_nullable as [IsNull]
from sys.columns c
inner join sys.types t on c.system_type_id=t.system_type_id
where c.[object_id]=object_id(@tableName) and t.[name]<>'sysname'
order by c.column_id
return
end