asp调用存储过程(二个进参,三个出参)

Mr_yang_da 2012-05-10 10:14:30
存储过程 pro_A
create pro pro_A
declare @str varchar(1000)
declare @NID int
declare @resulta int output
declare @resultb int output
declare @resultc int output
as
。。。。。。。。
return

请问asp怎样调用该存储过程 请写一个具体事例。
要在页面输出“有“@resulta”个你已经录入”“本次录入中的信息由@resultb个系统中已经存在多个,未允许录入”
“本次共录入了@resultc个信息”
请务必写一个具体的事例。
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_yang_da 2012-05-10
  • 打赏
  • 举报
回复
<%
DIM UserName,MailStr
DIM MyComm,MyRst
UserName=session("Rname")
Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm
.ActiveConnection = "Driver={SQL Server};Server=172.19.4.5;DataBase=oamail;uid=wm9001;pwd=wm9001admin" 'MyConStr是数据库连接字串
.CommandText = "pro_InsertMail"
.CommandType = 4
.Prepared = true
.Parameters.append .CreateParameter("@UserName",201,1,100,UserName) '传入参数@username
.Parameters.append .CreateParameter("@MailStr",201,1,5000,mailstr) '传入参数@mailstr
Set MyRst = .Execute()
end with
Set MyComm = Nothing
%>


报错:Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]过程 'pro_InsertMail' 需要参数 '@mailstr',但未提供该参数。


行 Set MyRst = .Execute()
justsoso66 2012-05-10
  • 打赏
  • 举报
回复
SqlConnection conn=new SqlConnection ("连接串");
conn.open();
SqlCommand cmd=new SqlCommand("pro_A",conn);
//定义命令对象类型
cmd.CommandType=CommandType.SotredProcedure;
//添加输入类型参数
cmd.Parameters.Add("@Str1", SqlDbType.NVarChar, 30).Direction = ParameterDirection.InputOutput;
//添加输出类型参数
cmd.Parameters.Add("@Str1", SqlDbType.NVarChar, 30).Direction = ParameterDirection.Output;
conn.close();
MyLinda 2012-05-10
  • 打赏
  • 举报
回复

SET Comm = Server.CreateObject("ADODB.COMMAND")

WITH Comm

.ActiveConnection = strCon '数据库连接字符串
.CommandText = "pro_A" '存储过程名字
.CommandType = 4
.Prepared = True '开启预编译

.Parameters.Append .CreateParameter("@EveryPage",3,1,4,EveryPage) '入参,每页数据条数
.Parameters.Append .CreateParameter("@TotalCount",3,4,4) '出参,总记录数
.Parameters.Append .CreateParameter("@TotalPageCount",3,4,4) '出参,总页数

SET Rs = .Execute

END WITH
Rs.Close '取返回参数要先关闭数据集
TotalCount = Comm.Parameters("@TotalCount")
TotalPageCount = Comm.Parameters("@TotalPageCount")


给你个小例子
祥元 2012-05-10
  • 打赏
  • 举报
回复

create pro pro_A
declare @str varchar(1000)
declare @NID int
declare @resulta int output
declare @resultb int output
declare @resultc int output

存储过程不是你这样写的,过程的参数是不需要Declare来定义的.
Create Pro pro_A
@str Varchar(1000),
@NID int,
@resulta Int OutPut,
@resultb Int OutPut,
@resultc Int OutPut
As
Begin
这里是内容
End


上面的五个参数,其中后面的三个传的是形参.即你传入一个定义的类型进去就可以.给你个例子:

public void ExecPro()
{
string ExecSql = "";
string str;
int NID;
int resulta;
int resultb;
int resultc;
str = "传入的参数";
NID = 12;

Hashtable ht = new Hashtable();
ht.Add("str", str);
ht.Add("NID", NID);
ht.Add("resulta", resulta);
ht.Add("resultb", resultb);
ht.Add("resultc", resultc);

//DaoHelper.ExecuteForDataSet(Mapper, "SysProcedure.SP_SetShopAudit", ht);

//回传结果
resulta = Convert.ToInt32(ht["resulta"]);
resultb = Convert.ToInt32(ht["resultb"]);
resultc = Convert.ToInt32(ht["resultc"]);
}

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧