`
wsql
  • 浏览: 11791473 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ms sql 2000 如何自己定义函数(返回多变量)

 
阅读更多

前些天在写存储过程的时候,需要用到这样一个功能:

14.2返回15 0.8

14.0返回14 0

思路是有带小数的取整+1,1-小数部分。由于在游标判断的时候有30个字段都需要判断。如果直接写在代码里面就有很多重复代码,造成冗余。

就想到用函数。没写过函数哟,就到网上看了一些例子:

create function GetInt_decimal(
参数
)
returns varchar(20) 返回类型
as
begin
处理代码
return 返回变量
end

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

很快就遇到一个问题,我是要返回多变量。

后来有个网友提醒用table 和拼字串的方法:(在这很感谢他)

方法一:table

if object_id('GetInt_decimal') is not null
drop function GetInt_decimal
go
create function GetInt_decimal(
@p decimal(18,8)
)
returns @table table(i int,d decimal(18,8))
as
begin
Declare @Int_Num as int,@decimal_Num as decimal(18,8)
if @p-cast(@p as int)<>0
begin
set @Int_Num=1+cast(@p as int)--整数
set @decimal_Num=@p-cast(@p as int)--小数
end
else
begin
set @Int_Num=@p
set @decimal_Num=0
end
if @@error=0
insert into @table select @Int_Num,@decimal_Num
return
end
方法二:拼字串


if object_id('GetInt_decimal') is not null
drop function GetInt_decimal
go
create function GetInt_decimal(
@p decimal(18,8)
)
returns varchar(20)
as
begin
Declare @Int_Num as int,@decimal_Num as decimal(18,8),@Int_decimal varchar(20)
if @p-cast(@p as int)<>0
begin
set @Int_Num=1+cast(@p as int)--整数
set @decimal_Num=@p-cast(@p as int)--小数

end
else
begin
set @Int_Num=@p
set @decimal_Num=0
end
if @@error=0
set @Int_decimal=convert(varchar,@Int_Num)+'|'+convert(varchar,@decimal_Num)
return @Int_decimal
end

分享到:
评论

相关推荐

    PostgreSQL_与_MS_SQLServer比较

    从不同的方面介绍了PostgreSQL_与_MS_SQLServer之间的差异,包括变量的定义和语法结构,存储过程、函数、游标等等

    程序员的SQL金典.rar

     4.4.2 MS SQL Server 2000  4.4.3 MS SQL Server 2005  4.4.4 Oracle  4.4.5 DB2  4.4.6 数据库分页  4.5 抑制数据重复  4.6 计算字段  4.6.1 常量字段  4.6.2 字段间的计算  4.6.3 数据处理函数  4.6.4...

    程序员的SQL金典4-8

     4.4.2 MS SQL Server 2000  4.4.3 MS SQL Server 2005  4.4.4 Oracle  4.4.5 DB2  4.4.6 数据库分页  4.5 抑制数据重复  4.6 计算字段  4.6.1 常量字段  4.6.2 字段间的计算  4.6.3 数据处理函数  4.6.4...

    SQL21日自学通

    在SQL*PLUS 中使用变量453 DEFINE 454 ACCEPT 455 NEW_VALUE457 DUAL 表458 DECODE 函数459 日期转换462 运行一系列的SQL 文件465 在你的SQL 脚本中加入注释466 高级报表467 总结469 问与答469 校练场469 练习470 第...

    程序员的SQL金典6-8

     4.4.2 MS SQL Server 2000  4.4.3 MS SQL Server 2005  4.4.4 Oracle  4.4.5 DB2  4.4.6 数据库分页  4.5 抑制数据重复  4.6 计算字段  4.6.1 常量字段  4.6.2 字段间的计算  4.6.3 数据处理函数  4.6.4...

    程序员的SQL金典7-8

     4.4.2 MS SQL Server 2000  4.4.3 MS SQL Server 2005  4.4.4 Oracle  4.4.5 DB2  4.4.6 数据库分页  4.5 抑制数据重复  4.6 计算字段  4.6.1 常量字段  4.6.2 字段间的计算  4.6.3 数据处理函数  4.6.4...

    程序员的SQL金典3-8

     4.4.2 MS SQL Server 2000  4.4.3 MS SQL Server 2005  4.4.4 Oracle  4.4.5 DB2  4.4.6 数据库分页  4.5 抑制数据重复  4.6 计算字段  4.6.1 常量字段  4.6.2 字段间的计算  4.6.3 数据处理函数  4.6.4...

    Microsoft SQL Server 2005 Express Edition SP3

    如果您的计算机已安装 SQL Server 2000 管理工具和 SQL Server Express 的默认实例,则可以使用 SQL Server 安装程序安装 SQL Server 2000 的默认实例。但是,这样做会禁用已安装的 SQL Server Express 实例。因此,...

    Perl 实例精解(第三版).pdf

    附录含有完整的函数和定义、命令行开关、特殊变量、常见模块和Perl调试器的列表,全功能的、面向对象的CGI程序,一些有用的脚本,以及很有帮助的HTM教程。 本书非常适合于Perl语言初学者阅读,对于Perl程序员,也有...

    orcale常用命令

    可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL&gt;START test SQL&gt;@test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的...

    21天学习SQL V1.0

    21天学习SQL V1.0.pdf 66 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 2 日期/时间函数.........................................................................................................

    net学习笔记及其他代码应用

    接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象...

    asp.net知识库

    简便的MS SQL 数据库 表内容 脚本 生成器 将表数据生成SQL脚本的存储过程 直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件表格 获取數据库表的前N条记录 几段SQL Server语句...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    句,这里我们将其放到private 里,因为一般的函数都放在public 里,而变量 都放在private 里。 #ifndef WIDGET_H #define WIDGET_H #include #include "mydlg.h" //包含头文件 namespace Ui { class Widget; } ...

    C语言讲解 主讲:邓君峰

    int k ) /* 函数定义 */ fact( { int i, y = 1; # include &lt;stdio.h&gt; void main( ) for(i = 2; i ; i++) { y = y*i; /* 计算 k! */ int m, n, resm, resn; return y; /* 结果返回 结果返回*/ } scanf("%d%d", &m, &...

    咖啡智能报表控件 2.0.zip

    组件的智能性体现在除了大量功能函数外,数据绑定包含各种数据库的绑定(oracle、DB2、MS SQL、ACCESS等)、 文本文件数据绑定,数据源没有个数限制,可以添加多个数据源进行数据显示,咖啡智能报表不是简单的进行...

    最全的oracle常用命令大全.txt

    可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL&gt;START test SQL&gt;@test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的...

    非Access数据库在VB中的编程及应用

    而且,尽管dBASE、Paradox本身的DDL (Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。...

    java 面试题 总结

    最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概...

Global site tag (gtag.js) - Google Analytics