博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
返回一个表
阅读量:6003 次
发布时间:2019-06-20

本文共 2222 字,大约阅读时间需要 7 分钟。

USE [EVISUWebOrder]

GO
/****** Object:  UserDefinedFunction [dbo].[F_GetOrderData]    Script Date: 07/04/2012 08:28:43 ******/
SET QUOTED_IDENTIFIER ON
GO
/*
Name:   dbo.fx_GetContentByRefNo
Description:    --根据RefNo取得Content的dataFile资料
Parameters:           
    @RefNo    char(8) 订单编号
Return Values:       
    @CONTENT
Ref. Tables:
    R     dbo.O_OrderContent
    R    dbo.M_Type
    R    dbo.M_Content
            
-------------------------------------------------------------------------------------------------      
Author Name: jokey.chen    
Creation Date:   2012-05-25
Modification Log:  
Example:
    select * from  dbo.F_GetOrderData('E000003f')
    select * from dbo.M_CareCodeChina
    select * from O_OrderContent where RefNo='BB000363' order by TypeSequence,ContSequence
*/
ALTER function [dbo].[F_GetOrderData]
(
    @OrderNO varchar(30)
)
RETURNS @ContentData TABLE
(
    OrderNO varchar(20),
    type_C_P  varchar(200) default ('') --类别,成份,百分比合在一起
)
   as
    begin
        declare @typeTemp_P varchar(200) ,@TypeTemp2 varchar(200)
        declare @typeC_P varchar(200)
        select @typeTemp_P='null',@TypeTemp2='',@typeC_P=''
        declare @curOrderNO varchar(200)
        declare @Type varchar(200)
        declare @Content varchar(200)
        declare @Percentage varchar(200)
        declare @rownum int
        select @rownum= count(*)from O_OrderContent where [OrderNO]=@OrderNO
        if @rownum=0    
            insert into @ContentData(OrderNO,type_C_P)values('','')
        else     
            begin
                declare mycursor cursor for (select [OrderNO],[Type],[Content],[Percentage] from O_OrderContent where [OrderNO]=@OrderNO)  --声明游标
                open mycursor --打开游标
                --从游标里取出数据库赋值到我们刚才声明的2个变量中
                fetch next from mycursor into @curOrderNO,@Type,@Content,@Percentage
                --判断游标的状态 0 fetch语句成功 -1语句失败 -2不提取的不存在
               while(@@fetch_status=0)
                 begin
                    if (@Type<>@typeTemp_P)
                        select @TypeTemp2='|'+@Type+': '
                    else
                        select @TypeTemp2=''
                    set @typeC_P=@typeC_P+convert(nvarchar,@TypeTemp2)+convert(nvarchar,@Percentage+'%'+' ')+convert(nvarchar,@Content+',')   
                    set @typeTemp_P=@Type --赋值给临时变量,以便下次判断    
                    fetch next from mycursor into @curOrderNO,@Type,@Content,@Percentage
                 end
            set @typeC_P=substring(@typeC_P,2,len(@typeC_P)) --把第一个 | 支掉
            set @typeC_P=substring(@typeC_P,1,len(@typeC_P)-1) --把最后一个,去掉
            set @typeC_P=replace(@typeC_P,',|','|')
            insert into @ContentData(OrderNO,type_C_P)values(@OrderNO,@typeC_P)
           --关闭游标
           close mycursor
           --撤销游标
           deallocate mycursor
         end
   RETURN
 end

转载地址:http://rzdmx.baihongyu.com/

你可能感兴趣的文章
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
Laravel实用小功能
查看>>
js表单各checkbox值
查看>>
测试python HTTPServer功能
查看>>
2.4 文件管理命令
查看>>
RAC禁用DRM特性
查看>>
Linux Logwatch的简单配置与使用
查看>>
不登QQ时就不启动腾讯QPCore服务
查看>>
linux磁盘异常占用
查看>>
监控patrol安装
查看>>
【统览整个学术圈】上交大发布知识图谱AceKG,超1亿实体,近100G数据量
查看>>
centos 安装mysql5.7
查看>>
@RequestParam注解的使用
查看>>
黑夜的精神力量
查看>>
Spring hibernate 事务的流程
查看>>
有关office 2010办公软件安装不上的问题解答
查看>>
centos7中php使用memcache
查看>>
Linux系统上传下载工具rz/sz
查看>>
matplotlib绑定到PyQt5(有菜单)
查看>>
利用Powershell和ceye.io实现Windows账户密码回传
查看>>