1.可以写成函数2.可以写成有输出参数的存储过程ouput
解决方案 »
- 求sql server2008 事务日志满的解决办法!!!!!!!!!!!!!!!!!
- 示例数据库AdventureWorks小问题
- 请教一个SQL写法
- SQL查询分页并在固定的位置显示指定的数据
- 当表中没有 text、ntext 或 image 列时,无法使用 TEXTIMAGE_ON。
- 求教 一对多 的查询
- 多列模糊查询 性能如何提升
- 关于数据库连接的问题
- 请问用什么ASP语句可以把 MSSQL 中的数据导入预定的 access 表中?
- 选择表中某一列的前5个数据的前18个字,怎么写sql语句?
- 批量数据插入
- 学生请教,现两个表中有相同的字段,字段的记录有相同的也有不同的,现求不同的怎么办最快
@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
提取方法:
declare @num numeric(8)
exec @num=dbo.存儲過程 參數
select @num --返回return的值
create proc aaa
as
...處理1...
if @@error<>0 goto err
...處理2...
if @@error<>0 goto err
...
return(0)
err:
return(-1) --發生錯誤返回-1
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
%>
@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 语句
存储过程中,只要有return语句就有返回值,这与存储过程设多少个参数没有关系的!返回值可以返回,自己定义的数字,也可以返回系统执行存储过程的状态(return @@error)如果做一个 exec sp_pro1 para1,para2 的函数,当然可以了!
declare @num numeric(8)
exec @num=168
select @num