• 存储过程共有三种返回值


    --参考:

    ----------------------存储过程共有三种返回值-------------------
    /*(一)、参数返回值@parm2;
    (二)、过程返回值return 100;
    (三)、数据集返回值select * from table1 where age = @parm1
    请问,如何得到三类返回值?
    */
    create table table1(
    name varchar(30),
    age integer,
    primary key(name, age)
    )

    create procedure proc1
    @parm1 integer,
    @parm2 varchar(30) output
    as
    select @parm2 = 'zhongguo'
    select * from table1 where age = @parm1
    return 100

    --(一)、参数返回值@parm2;
    declare @re varchar(30)
    exec proc1 1,@re out
    select 返回结果=@re

    --(二)、过程返回值return 100;
    declare @re int,@parm2 varchar(30)
    exec @re=proc1 1,@parm2 out
    select 返回结果=@re

    --(三)、数据集返回值select * from table1 where age = @parm1
    --定义返回结果保存的临时表(因为是返回记录集,所以要用临时表)
    --调用返回结果
    --declare @re varchar(30)
    --insert #re exec proc1 1,@re out
    select * into #re from OPENROWSET('SQLOLEDB',
    'SERVER=zhou;uid=sa;pwd=zhou;Database=pubs','SET FMTONLY OFF;SET NOCOUNT ON declare @re varchar(30) exec proc1 ''1'',@re out') as a
    --显示结果
    select * from #re
    --处理完成后删除临时表
    drop table #re



    --返回数据集方式一:
    /*补充*/
    execute sp_executesql
    N'select * from pubs.dbo.employee where job_lvl = @level',
    N'@level tinyint',
    @level = 35
    或者多条件
    execute sp_executesql
    N'select * from IndividualSaleHouse where user_ID = @user_ID and Area_ID=@Area_ID ',
    N'@user_ID int,@Area_ID int',
    @user_ID = 1,@Area_ID=1


    --返回单个值:
    /* 补充 */
    declare @sql nvarchar(200)
    declare @cnt int
    set @sql=N'select @cnt=count(*) from WQ_STINFO_B '
    exec sp_executesql @sql,N'@cnt int output',@cnt output
  • 相关阅读:
    centos ppp拨号
    Xen、KVM和VirtualBox比拼
    static用法一
    linux浏览器,邮件客户端,输入法,双屏设置,应用软件,gnome-screenshot/scrot -s截图,office
    OpenGl学习总结
    DICOM医学图像处理:DCMTK在VS2012中的配置
    linux下用mail发送邮件
    (HLS播放器之中的一个)HLS协议之M3U8解析
    tcpdump抓包分析具体解释
    对账简单说
  • 原文地址:https://www.cnblogs.com/yhb199/p/1233144.html
Copyright © 2020-2023  润新知