网站建设资讯

NEWS

网站建设资讯

sqlserver的函数,sqlserver函数语法

SqlServer函数

创建自定义函数:

创新互联公司不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的成都网站设计、做网站质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式全网整合营销推广需求,让再小的品牌网站设计也能产生价值!

use 数据库名

go

create function 函数名

(@pno int)

returns int

as

begin

declare @a int

if not exists(select * from person where pno=@pno)

set @a=-1

else

set @a=1

return @a

end

调用函数:

use 数据库名

go

select dbo.函数名(13250)

C#怎么调用sqlserver的自定义函数

sql server 自定义函数的使用

自定义函数

用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回

用户自定义函数的类型:

标量函数:返回一个标量值

表格值函数{内联表格值函数、多表格值函数}:返回行集(即返回多个值)

1、标量函数

Create function 函数名(参数)

Returns 返回值数据类型

[with {Encryption | Schemabinding }]

[as]

begin

SQL语句(必须有return 变量或值)

End

Schemabinding :将函数绑定到它引用的对象上(注:函数一旦绑定,则不能删除、修改,除非删除绑定)

Create function AvgResult(@scode varchar(10))

Returns real

As

Begin

Declare @avg real

Declare @code varchar(11)

Set @code=@scode + ‘%’

Select @avg=avg(result) from LearnResult_baijiali

Where scode like @code

Return @avg

End

执行用户自定义函数

select 用户名。函数名 as 字段别名

select dbo.AvgResult(‘s0002’) as result

用户自定义函数返回值可放到局部变量中,用set ,select,exec赋值

declare @avg1 real ,@avg2 real ,@avg3 real

select @avg1= dbo.AvgResult(‘s0002’)

set @avg2= dbo.AvgResult(‘s0002’)

exec @avg3= dbo.AvgResult ‘s0002’

select @avg1 as avg1 ,@avg2 as avg2 ,@avg3 as avg3

函数引用

create function code(@scode varchar(10))

returns varchar(10)

as

begin

declare @ccode varchar(10)

set @scode = @scode + ‘%’

select @ccode=ccode from cmessage

where ccode like @scode

return @ccode

end

select name from class where ccode = dbo.code(‘c001’)

2、表格值函数

a、 内联表格值函数

格式:

create function 函数名(参数)

returns table

[with {Encryption | Schemabinding }]

as

return(一条SQL语句)

create function tabcmess(@code varchar(10))

returns table

as

return(select ccode,scode from cmessage where ccode like @ccode)

b、 多句表格值函数

create function 函数名(参数)

returns 表格变量名table (表格变量定义)

[with {Encryption | Schemabinding }]

as

begin

SQL语句

end

多句表格值函数包含多条SQL语句,至少有一条在表格变量中填上数据值

表格变量格式

returns @变量名 table (column 定义| 约束定义 [,…])

对表格变量中的行可执行select,insert,update,delete , 但select into 和 insert 语句的结果集是从存储过程插入。

Create function tabcmessalot (@code varchar(10))

Returns @ctable table(code varchar(10) null,cname varchar(100) null)

As

Begin

Insert @ctable

Select ccode,explain from cmessage

Where scode like @code

return

End

Select * from tabcmessalot(‘s0003’)

来自:

C#调用SQL自定义函数返回值

代码

1 --SQL自定义函数:

2

3 CREATE FUNCTION [GetProjectID] (@headStr nvarchar(10),@date datetime)

4 )

5

6 RETURNS NVARCHAR(200)

7

8 AS

9

10 BEGIN

11

12 --不能在自定义函数中用INSERT INTO

13

14 --insert into emos_cust(cust_name,dates)values(

15

16 --@headStr,@date

17

18 --)

19

20 return 'TEST BY HANSHU'

21 END

代码

1 /// summary

2 /// 获取项目文件编号 涂聚文

3 /// /summary

4 private void FileNo()

5 {

6

7 SqlConnection conn = new SqlConnection(connectionString);

8 string strSql = "GetProjectID"; //自定SQL函数

9 SqlCommand cmd = new SqlCommand(strSql, conn);

10 cmd.CommandType = CommandType.StoredProcedure;

11 cmd.Parameters.Add("@headStr", SqlDbType.NVarChar).Value = "ZQ3"; //输入参数

12 cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = System.DateTime.Now.ToShortDateString(); //输入参数

13 cmd.Parameters.Add("@returnString", SqlDbType.NVarChar);

14 cmd.Parameters["@returnString"].Direction = ParameterDirection.ReturnValue; //返回参数

15 try

16 {

17 conn.Open();

18 object o= cmd.ExecuteScalar();

19

20 this.txtAFileNO.Text = cmd.Parameters["@returnString"].Value.ToString();

21

22 //Response.Write("");

23

24 }

25 catch (Exception ex)

26 {

27

28 this.txtAFileNO.Text = ex.Message;

29

30 }

31 finally

32 {

33

34 if (!(conn.State == ConnectionState.Closed))

35 {

36

37 conn.Close();

38

39

40 }

41

42 }

43

44

45 }

sqlserver 函数的写法

returns @RowSet table(

ID int identity(1,1) ,

score float,

lastScore float

)

你这里已经声明了一个表格类型变量作为函数的返回值.

那么只要在函数里对这个表进行赋值,就可以直接return

insert into @RowSet values(...)

return

--------

declare @ScoreList table (YScore float)

declare @ScoreList1 table (lastScore float)

-------------------------------------------

怎么我看你又声明了两个表格类型的变量?你函数声明里的返回类型是表,那么单行返回的话就只能往里装简单类型的值.

如果你要union拼接两个table一起返回的话,两个内部table和声明的返回table定义又不一致.

很奇怪的写法...能看出来你想干什么...但这种写法很怪异.

========================================补充

insert into @ScoreList SELECT...

insert into @ScoreList1 SELECT ...

你这不是把两个查询的结果赋给两个内部变量了么,且这个表与你声明的返回表都是一个float列.

你完全可以再把这两个变量表insert 到@RowSet啊,或者不用这俩变量表,直接在两个查询里向@RowSet写入值.

最后直接

return

end

不就行了?

======

这有个返回值为talble的函数,你参看一下吧.你这个函数的完成度已经相当高了.

sql中的函数

有好几个函数可以达到你的要求

其中一个是concat函数

oracle:

sql@kokooaselect concat(concat('a','bcd'),'e') from dual;

CONCA

-----

abcde

原来是bcd,首尾都加了个字符

SqlServer函数的系统函数

newid 无参数

返回一个GUID(全局唯一表示符)值

例如:select newid()

返回:2E6861EF-F4DB-4FFE-86EB-637482FE982J2

isnumeric (任意表达式)

判断表达式是否为数值类型或者是否可以转换成数值。

是:返回1,不是:返回0

例如:select isnumeric(1111) 返回 1

select isnumeric('123rr') 返回 0

select isnumeric('123') 返回 1

isnull (任意表达式1,任意表达式2)

如果任意表达式1不为NULL,则返回它的值;否则,在将任意表达式2的类型转换为任意表达式1的类型(如果这两个类型不同)后,返回任意表达式2的值。

例如:select isnull(null,N'没有值') 返回 没有值

select isnull(N'具体的值',N'没有值') 返回 具体的值

isdate (任意表达式)

确定输入表达式是否为有效日期或可转成有效的日期;

是:返回1,不是:返回0

例如:select isdate(getdate()) 返回1

select isdate('2013-01-02') 返回1

select isdate('198') 返回0


网页名称:sqlserver的函数,sqlserver函数语法
网站网址:http://njwzjz.com/article/hdjeoh.html