1.可以写成函数2.可以写成有输出参数的存储过程ouput

解决方案 »

  1.   

    如果是整数值,可以用return返回如果可能,建议写成函数
      

  2.   

    下列示例显示有一个输入参数和一个输出参数的存储过程。存储过程中的第一个参数 @title 将接收由调用程序指定的输入值,而第二个参数 @ytd_sales 将向调用程序返回该值。SELECT 语句使用 @title 参数以获得正确的 ytd_sales 值,并将该值赋予 @ytd_sales 输出参数。CREATE PROCEDURE get_sales_for_title
    @title varchar(80),   -- This is the input parameter.
    @ytd_sales int OUTPUT -- This is the output parameter.
    AS  -- Get the sales for the specified title and 
    -- assign it to the output parameter.
    SELECT @ytd_sales = ytd_sales
    FROM titles
    WHERE title = @titleRETURN
    GO 
      

  3.   

    存在過程或用return(返回值),當在存儲過程中不加return時,隻要運行成功就會返回0,
    提取方法:
    declare @num numeric(8)
    exec @num=dbo.存儲過程 參數
    select @num  --返回return的值
      

  4.   

    也可在存儲過程中調用return,如
    create proc aaa 
    as
      ...處理1...
      if @@error<>0 goto err
      ...處理2...
      if @@error<>0 goto err
      ...
      return(0)
    err:
       return(-1)  --發生錯誤返回-1
      

  5.   

    刚作的ASP代码,希望对你有用<% dim sywg_insurance_id , input_times , moditype
    sywg_insurance_id = request("sywg_insurance_id")
    input_times = request("input_times")
    moditype = request("moditype")
    '==========================执行存储过程=

    set conn=server.CreateObject("adodb.connection")
    set CmdSp=server.CreateObject("adodb.command")
    strconn=Application("swgz_ConnectionString") conn.Open strconn
    set CmdSp.ActiveConnection=conn CmdSp.CommandText="{?=call pro_inputdata(?,?,?)}"
    set tmppar = CmdSP.CreateParameter("@RETURN_VALUE",3,4)
    set tmppar1 = CmdSP.CreateParameter("@sywg_insurance_id",200,1,10,sywg_insurance_id)
    set tmppar2 = CmdSP.CreateParameter("@input_times",3,1,4,input_times)
    set tmppar3 = CmdSP.CreateParameter("@moditype",3,1,4,moditype) CmdSp.Parameters.Append tmppar
    CmdSp.Parameters.Append tmppar1
    CmdSp.Parameters.Append tmppar2
    CmdSp.Parameters.Append tmppar3 CmdSp.Execute()
    intreturn = CmdSp("@RETURN_VALUE")
    'response.write intreturn

    set CmdSp.ActiveConnection = nothing
    set cmd = nothing
    '==========================
    if intreturn = 0 then

    response.write "<script>alert('导入成功!');window.location.href='main.asp';</script>"
    'response.Redirect "main.asp"
    'end if
    elseif intreturn = -100 then
    strstr="<script>alert('导入成功,但是有异常记录!');" _
    & "window.location.href='error_datail.asp?sywg_insurance_id=" _
    & sywg_insurance_id &"&input_seq="&input_times &"';</script>"
    Response.Write strstr

    'Response.Redirect "error_datail.asp?sywg_insurance_id="&sywg_insurance_id _
    ' &"&input_seq="&input_times
    else
    response.write "<script>alert('出错!请保证EXCEL表格数据正确!!');window.href.location='main.asp';</script>"
    end if

    %>
      

  6.   

    存储过程如下:CREATE PROCEDURE pro_inputdata(
     @sywg_insurance_id varchar(10), --保险号
     @input_times int, --第几次导入
     @moditype smallint = 0 --导入类型 0 表示导入,1 表示修改
    )
     ASdeclare @inttmpID int --临时表的ID号
    , @inttotalID int  --临时表个数
    , @vchrWorkID varchar(20) --工号
    , @vchrIDcard varchar(20) --身份证号
    , @vchrDeptID varchar(20) --部门编号
    , @vchrName varchar(100) --姓名
    , @vchrDeptName varchar(100) --部门名称
    , @vchrinsurance_overall_id varchar(20) --保险总编号
    , @vchrinsurance_id varchar(20) --保险编号
    , @vchrcoverage varchar(20) --保险金额
    , @vchrinsurance_fee varchar(20) --保费
    , @vchrstartdate varchar(20) --起保日期
    , @vchrenddate varchar(20) --满期日期
    , @vchrmqje varchar(20) --满期金额
    , @vchrnjbf varchar(20) --年缴保费
    , @vchrtotal_njbf varchar(20) --总投保费
    , @vchrinsurance_type varchar(20) --保险类别
    , @vchrinsurance_company varchar(50) --保险公司
    , @vchrff_state varchar(20) --分发状态
    , @vchryf_insurance_fee varchar(20) --已发保费总额
    , @vchrwf_insurance_fee varchar(20) --末发保费总额
    , @vchrtbbm varchar(50) --投保部门
    , @intErrState int --错误状态
    , @intErrNum int  --错误条数
    , @intSuccNum int --成功条数
    , @mnyPreFee money --新建导入时的保费
    , @vchrPreName varchar(50) --新建导入时姓名
    , @vchrInsuranceCompany varchar(500) --保险公司(写进导入历史表的所有保险公司)
    , @mnyTotalFee money --保险总额
    , @vchrinsurance_name varchar(50) --保险名称 --清空临时表
    truncate table tmpemployeeinsurance
    if @intErrNum = 0
    return 0
    else
    return -100
    end
    部分代码,太长发不出来,主要看 return 语句
      

  7.   


    存储过程中,只要有return语句就有返回值,这与存储过程设多少个参数没有关系的!返回值可以返回,自己定义的数字,也可以返回系统执行存储过程的状态(return @@error)如果做一个 exec sp_pro1 para1,para2 的函数,当然可以了!
      

  8.   


    declare @num numeric(8)
    exec @num=168
    select @num