数据库技术与应用—SQL Seerver问题:编写用户定义函数,输入正整数,返回该正整数的阶乘值!

数据库技术与应用—SQL Seerver问题:编写用户定义函数,输入正整数,返回该正整数的阶乘值!,第1张

这个网上有很多例子么~~要善于利用google和baidu么~~ 呵呵

在库中建立一个函数,代码为:

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

-- 计算输入参数的阶乘

CREATE FUNCTION [dbo][Factorial](@num INT)

RETURNS BIGINT

AS

BEGIN

DECLARE @Result BIGINT;

DECLARE @i INT;

SELECT @Result = 1;

SELECT @i = 1;

IF (@num < 1)

BEGIN

-- 如果输入的参数小于1返回1

SELECT @Result = 1

END

ELSE

BEGIN

-- 循环计算阶乘

WHILE (@i <= @num)

BEGIN

SELECT @Result = @Result @i;

SELECT @i = @i + 1;

END

END

-- 返回结果

RETURN @Result;

END

假设有表test01,列MyInt,类型为Int,值为4,执行查询:

select dbofact(MyInt) from test01

则查询结果为 24

1234=24

如果是sql server 可以用isnumeric函数来判断是否为数字

如果为数字isnumeric返回1,否则为零。

如select from table1 where isnumeric(col1) <> 1

1、首先是找到标量函数,右键单击选择新建。

2、接着编写函数,一般都是带参数的,如下图所示;

3、然后执行完毕就可以看到自己创建的函数了,如下图所示;

4、接着我们在select中直接调用函数即可,如下图所示;

5、执行select语句,就可以看到函数返回的结果了,如下图所示;

6、最后你可以通过改变参数继续测试函数,如下图所示。完成效果图。

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

请告诉我没个函数是什么意思!!!

谢谢!!~~~

解析:

一、 数值函数

数值函数用于数值运算,其自变量与函数都是数值型数据。

1.取绝对值函数ABS( )

格式ABS(<nExp>)

功能计算nExp的值,并返回该值的绝对值。

2.指数函数EXP( )

格式EXP(<nExp>)

功能求以e为底、nExp值为指数的幂,即返回ex的值。

3.取整函数INT( )

格式INT(<nExp>)

功能计算nExp的值,返回该值的整数部分。

4.上界函数CEILING( )

格式CEILING(<nExp>)

功能计算nExp的值,返回一个大于或等于该值的最小整数。

5.下界函数FLOOR( )

格式FLOOR(<nExp>)

功能计算nExp的值,返回一个小于或等于该值的最大整数。

6.自然对数函数LOG( )

格式LOG(<nExp>)

功能求nExp的自然对数。nExp的值必须为正数。

7.常用对数函数

格式LOG10(<nExp>)

功能求nExp的常用对数。nExp的值必须为正数。

8.平方根函数SQRT( )

格式SQRT(<nExp>)

功能求非负nExp的平方根。

9.最大值函数MAX( )和最小值函数MIN( )

格式MAX(<nExp1>,< nExp2>[,< nExp3>])

MIN(<nExp1>,< nExp2>[,< nExp3>])

功能返回数值表达式中的最大值MAX( )和最小值MIN( )。

10.求余数函数MOD( )

格式MOD(<nExp1>,<nExp2>)

功能返回nExp1除以nExp2的余数。余数的小数位数与nExp1相同,符号与nExp2相同。

11.四舍五入函数ROUND( )

格式ROUND(<nExp1>,< nExp2>)

功能返回nExp1四舍五入的值, nExp2表示保留的小数位数。

12.π函数PI( )

格式PI( )

功能返回常量π的近似值

13.正弦函数SIN( )

格式SIN(<nExp>)

功能返回nExp的正弦值。nExp以弧度为单位,函数值域为[-1,1]。

14.余弦函数COS( )

格式COS(<nExp>)

功能返回nExp的余弦值。nExp以弧度为单位,函数的值域为[-1,1]。

15.正切函数TAN( )

格式TAN(<nExp>)

功能返回nExp的正切值。nExp以弧度为单位,其值为π/2或- π/2时,系统返回一个绝对值很大的数。

16.反正弦函数ASIN( )

格式ASIN(<nExp>)

功能返回nExp的反正弦值。自变量值必须在[-1,1]内,函数值为弧度,且值域为[-π/2, π/2]。

17.反余弦函数ACOS( )

格式ACOS(<nExp>)

功能返回nExp的反余弦值。自变量的值必须在[-1,1]内,函数值为弧度,值域为[-π/2, π/2]。

18.反正切函数ATAN( )

格式ATAN(<nExp>)

功能返回nExp的反正切值。函数值为弧度,值域为(-π/2, π/2)。

二、 字符函数

字符函数是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据。函数中涉及的字符型数据项,均以cExp表示。

1.子串位置函数

格式AT(<cExp1>,< cExp 2>)

功能返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。

2.取左子串函数LEFT( )

格式LEFT(<cExp>,<nExp>)

功能返回从cExp串中第一个字符开始,截取nExp个字符的子串。

3.取右子串函数RIGHT( )

格式RIGHT(<cExp >,< nExp>)

功能返回从cExp串中右边第一个字符开始,截取nExp个字符的子串。有关说明同LEFT( )函数。

4.取子串函数SUBSTR( )

格式SUBSTR (<cExp>,<nExp1> [,< nExp2>] )

功能返回从串cExp中第nExp1个字符开始,截取nExp2个字符的子串。

5.字符串长度函数LEN( )

格式LEN(<cExp>)

功能返回cExp串的字符数(长度)。函数值为N型。

6.删除字符串前导空格函数LTRIM( )

格式LTRIM(<cExp>)

功能删除cExp串的前导空格字符。

7.删除字符串尾部空格函数RTRIM( ) | TRIM( )

格式RTRIM | TRIM(<cExp>)

功能删除cExp串尾部空格字符。

8.空格函数SPACE( )

格式SPACE (<nExp>)

功能返回一个包含nExp个空格的字符串。

9.字符串替换函数STUFF( )

格式STUFF(<cExp1>,<nExp1>,<nExp2>,<cExp2>)

功能从nExp1指定位置开始,用cExp2串替换 cExp1串中nExp2个字符。

10.字符复制函数 REPLICATE( )

格式REPLICATE (<cExp>,<nExp>)

功能返回将cExp串重复nExp次的字符串。

11.定义输出格式函数 TRANSFORM( )

格式TRANSFORM (<eExp>,<cExp>)

功能按格式描述式cExp指定的格式,输出任意表达式eExp的值。

12.大小写转换函数LOWER( ) 和UPPER( )

格式LOWER (<cExp>)

UPPER (<cExp>)

功能LOWER( )将cExp串中字母全部变成小写字母,UPPER( )将cExp串中字母全部变成大写字母,其它字符不变。

13.宏替换函数 &

格式& < cVar >[< cExp >]

功能替换出字符型变量cVar中字符。

三、 日期时间函数

日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式dExp或日期时间型表达式tExp。

1.系统日期函数DATE( )

格式DATE()

功能返回当前系统日期,此日期由Windows系统设置。函数值为D型。

2.系统时间函数TIME( )

格式TIME([<nExp>])

功能返回当前系统时间,时间显示格式为hh:mm:ss。若选择了nExp ,则不管为何值,返回的系统时间还包括秒的小数部分,精确至小数点后两位。函数值为C型。

3.日期函数DAY( )

格式DAY(<dExp>)

功能返回dExp式中的天数。函数值为N型

4.星期函数DOW( )、CDOW( )

格式DOW(<dExp>)

CDOW(<dExp>)

功能DOW( )函数返回dExp式中星期的数值,用1~7表示星期日~星期六。函数值为N型。CDOW( ) 函数返回dExp式中星期的英文名称。函数值为C型。

5.月份函数MONTH( )、CMONTH( )

格式MONTH(<dExp>)

CMONTH(<dExp>)

功能MONTH( )函数返回dExp式中月份数。函数值为N型。CMONTH( )函数则返回月份的英文名。函数值为C型。

6.年份函数YEAR( )

格式YEAR(<dExp>)

功能函数返回dExp式中年份值。函数值为N型。

四、转换函数

在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。Visual FoxPro系统提供了若干个转换函数,较好地解决了数据类型转换的问题。

1.ASCII码函数ASC( )

格式ASC (<cExp>)

功能返回cExp串首字符的ASCII码值。函数值为N型。

2.ASCII字符函数CHR( )

格式CHR(<nExp >)

功能返回以nExp值为ASCII码的ASCII字符。函数值为C型。

3.字符日期型转换函数CTOD( )

格式CTOD(<cExp>)

功能把“××/××/××”格式的cExp串转换成对应日期值。函数值为D型。

4.日期字符型转换函数DTOC( )

格式DTOC(<dExp >〔, 1〕)

功能把日期dExp转换成相应的字符串。函数值为C型。

5.数值字符型转换函数STR( )

格式STR(<nExp1>[,< nExp2>][,< nExp3>])

功能将nExp1的数值转换成字符串形式。函数值为C型。

6.字符数值型转换函数VAL( )

格式VAL (<cExp>)

功能将cExp串中数字转换成对应数值,转换结果取两位小数。函数值为N型。

五、 测试函数

在数据库应用的 *** 作过程中,用户需要了解数据对象的类型、状态等属性,Visual FoxPro提供了相关的测试函数,使用户能够准确地获取 *** 作对象的相关属性。

1.数据类型函数TYPE( )

格式TYPE(<cExp >)

功能返回cExp 串表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。C:字符型,D:日期型,N:数值型,L:逻辑型,M:备注型,G:通用型,U:未定义。

2.文件查找函数FILE()

格式FILE(<cExp>)

功能根据cExp串中指定路径查找文件,如未指定路径,则在默认目录中查找。文件存在,返回逻辑真(T) 值,否则为逻辑假(F)值。

3.条件测试函数IIF( )

格式IIF(<lExp >,<eExp 1>,<eExp2>)

功能逻辑表达式lExp值为真(T),返回表达式eExp1的值,否则返回表达式eExp2的值。eExp1和eExp2可以是任意数据类型的表达式。

4.表结束标志测试函数EOF( )

格式EOF([<工作区号> | <别名>])

功能测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真(T),否则为假(F)。

5.表起始标识测试函数BOF ( )

格式BOF ([<工作区号> | <别名>])

功能测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真(T),否则为假(F)。工作区说明见EOF()函数。

6.当前记录号函数RECNO()

格式RECNO([<工作区号> | <别名>])

功能返回指定工作区中表的当前记录的记录号。对于空表返回值为1。

7.当前记录逻辑删除标志测试函数DELETED( )

格式DELETED([<工作区号> | <别名>])

功能测试指定工作区中表的当前记录是否被逻辑删除。如果当前记有逻辑删除标记,函数返回真(T),否则为假(F)。

8.记录数函数RECCOUNT( )

格式RECCOUNT ([<工作区号> | <别名>])

功能返回指定工作区中表的记录个数。如果工作区中没有打开表则返回0。

9.记录大小测试函数RECSIZE( )

格式RECSIZE( [<工作区号> | <别名>] )

功能返回指定工作区中表的记录总长度。如果工作区中没有打开表则返回0。

10.屏幕列坐标和行坐标函数 COL( )、ROW( )

格式COL ( )

ROW()

功能COL ( )返回光标的列坐标值,ROW ( )返回光标的行坐标值。

11.打印机列坐标和行坐标函数PCOL( ),PROW( )

格式PCOL( )

PROW()

功能返回打印机打印头所处位置的列坐标和行坐标。

引用 2 楼 tangren 的回复:如果要摸拟每五秒,可以使用一个JOB来调用一个存储过程来定时写入数据。如果要一次性写入,只需要使用一个循环就可以了,如果要产生随机数,可以使用dbms_randomvalue函数 使用数据库JOB实现,每5秒调用一次!

1,第一个

create function dboF_convertToGrade (@score INT)

RETURNs VARCHAR(50)

AS

BEGIN

DECLARE @freturn VARCHAR(255)

SET @freturn=''

IF(@score>=95)

SET @freturn='优秀'

IF(@score>=90 AND @score<95)

SET @freturn='良好'

IF(@score>=80 AND @score<90)

SET @freturn='中'

IF(@score>=60)

SET @freturn='及格'

IF(@score<60)

SET @freturn='不及格'

RETURN @freturn

END

2、第二个

create function dboF_getStudentsScoreByDepartmentAndCourse (@Coursename VARCHAR(50),@Department VARCHAR(50))

RETURNS @t_studentScore TABLE(

Stuentname VARCHAR(50),

Score INT

)

AS

BEGIN

--自己写检索sql,你的表名称和结构我不知道

RETURN

END

3、第三个

SELECT FROM

dboF_getStudentsScoreByDepartmentAndCourse ('数据库技术','信息工程系')

后面的没表结构 ,没法答

数据库中的函数封装了一些通用的功能,例如日期类型和字符串类型之间的转换,每个数据库系统都内置了一些函数,当然用户也可以自己定义自己的函数。 这些函数可以在sql和后台存储过程或触发器中使用,但是使用了这些函数的SQL已经不是标准的SQL了,无移植性可言。所以一般情况下,在SQL中尽量不要用自定义的函数,要用的话也最好用在储存过程或触发器中。即使数据库内置的函数也尽量避免,因为每个数据库的写法都不同,日期类型和字符串的转换就是个例子。 在使用函数带来的优点时,同时也失去了移植性。 当然,在移植一个程序到不同数据库时,使用函数有时可避免修改sql。比如在使用源A数据库时,sql中包含大量的函数fa,但是目标数据库B中对应的函数是fb,这时可以在数据库B中建立一个fa的函数,就避免了修改sql语句。

以上就是关于数据库技术与应用—SQL Seerver问题:编写用户定义函数,输入正整数,返回该正整数的阶乘值!全部的内容,包括:数据库技术与应用—SQL Seerver问题:编写用户定义函数,输入正整数,返回该正整数的阶乘值!、数据库表中有一列中的有些数据不是数字,如何编写一个函数找出这些异常数字、SQL中如何调用一个函数啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9541448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存