CSDN博客

img YangYuWeb

ASP中调用存储过程

发表于2004/9/22 17:01:00  850人阅读

*/
CREATE PROCEDURE pr_testAdd(
  @StudNo varchar(10),			--学生学号
  @id int,				--文章ID,对应于修改信息,增加时为NULL
  @MagType varchar(50),			--期刊类型
  @Grade varchar(10),			--等级(只有核心期刊,才有等级,其它类型为NULL)
  @OneAuthor tinyint,			--是否唯一作者(1--唯一作者,0--不是唯一作者)
  @AuthorSeq varchar(50),		--作者顺序(只有不是唯一作者才不为空)
  @Credit float output			--返回分值
)
上面是存储过程的定义。大家看看我这样调用为什么不对!


	set CmdSP = Server.CreateObject("ADODB.Command")

	CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=test"

	CmdSP.CommandText = "{call pr_testAdd(?,?,?,?,?,?,?)}" 
	CmdSP.CommandType = adCmdSPStoredProc
	
	CmdSp.Parameters.Append CmdSP.CreateParameter("@StudNo",adVarchar,adParamInput,10,"20140001")
	CmdSp.Parameters.Append CmdSP.CreateParameter("@id",adInteger,adParamInput,NULL)
	CmdSp.Parameters.Append CmdSP.CreateParameter("@MagType",adVarchar,adParamInput,50,"核心期刊")
	CmdSp.Parameters.Append CmdSP.CreateParameter("@Grade",adVarchar,adParamInput,10,"A1")
	CmdSp.Parameters.Append CmdSP.CreateParameter("@OneAuthor",adTinyInt,adParamInput,0)
	CmdSp.Parameters.Append CmdSP.CreateParameter("@AuthorSeq",adVarchar,adParamInput,50,"第一作者")
	CmdSp.Parameters.Append CmdSP.CreateParameter("@Credit",,adParamInput)



	'运行存储过程,并得到返回记录集
	CmdSP.Execute()

    if err.number = 0  then

	Response.Write "ok"
	else 
	 Response.write "failed"

	End if
真的很急呀!!!
回复人: lbIlj() ( ) 信誉:100 2004-04-25 21:54:20Z 得分:0
 
最后一个输出参数是这样的
	CmdSp.Parameters.Append CmdSP.CreateParameter("@Credit",,adParamOutput)
Top
回复人: lbIlj() ( ) 信誉:100 2004-04-25 22:19:03Z 得分:0
 
up
Top
回复人: lbIlj() ( ) 信誉:100 2004-04-25 22:57:29Z 得分:0
 
没有人对这个问题有研究码、
Top
回复人: Jaron(唐伯虎点蚊香) ( ) 信誉:317 2004-04-25 23:03:56Z 得分:30
 
我以前程序里的一段,希望对你有用.

Set cmd = Server.CreateObject("Adodb.Command")
cmd.ActiveConnection = Db.Conn
cmd.CommandText = "Enterprise_Registration_Add"
cmd.CommandType = &H0004
cmd.Parameters.Append cmd.CreateParameter("@Accout",200,1,20)
cmd.Parameters.Append cmd.CreateParameter("@Password",200,1,20)
cmd.Parameters.Append cmd.CreateParameter("@Email",200,1,50)
cmd.Parameters.Append cmd.CreateParameter("@RegIP",200,1,20)
cmd("@Accout") = Accout
cmd("@Password") = Password
cmd("@Email") = Email
cmd("@RegIP") = RegIP
cmd.execute
'//用户登陆
' @EnterpriseId bigint output,
' @MemeberId bigint output,
' @EnpterrpiseLevel int output,
'@IsEnterprise bit output
If Err.Number <> 0 Then 
    Str.Error("<li>注册发生错误,等会再试")
Else
   Session("EnterpriseId") =Cmd("@EnterpriseId")
   Set Cmd = NOthing
End if
Top
回复人: Jaron(唐伯虎点蚊香) ( ) 信誉:317 2004-04-25 23:05:25Z 得分:20
 
如果只是返回记录集
可以用:

set rs = conn.execute("存储过程名 参数1,参数2,参数3")

do while not (rs.eof)
.........
rs.movenext
loop
Top
回复人: zhe5d(不耻瞎问) ( ) 信誉:100 2004-04-26 01:03:34Z 得分:20
 
1,调用没有参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"</P><P>conn.Open strconn
set cmd.ActiveConnection=conn</P><P>cmd.CommandText="{call nono}"</P><P>'set rs=cmc.exe 或者cmd.execute</P><P>set rs=cmd.Execute()</P><P>%>
2,一个输入的参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"</P><P>conn.Open strconn
set cmd.ActiveConnection=conn</P><P>cmd.CommandText="{call oneinput(?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger ,adParamInput )
cmd("@aaa")=100</P><P>cmd.Execute()</P><P>%>
3,一个输入参数和一个输出的参数
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"</P><P>conn.Open strconn
set cmd.ActiveConnection=conn</P><P>cmd.CommandText = "{call oneinout(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput)
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)</P><P>cmd.Execute()</P><P>bbb=cmd("@bbb")
%>
4,一个输入参数,一个输出参数,和一个返回值
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"</P><P>conn.Open strconn
set cmd.ActiveConnection=conn</P><P>cmd.CommandText="{?=call onereturn(?,?)}"</P><P>cmd.Parameters.Append cmd.CreateParameter("@return_value",adInteger,adParamReturnvalue )
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput )
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)</P><P>cmd.Execute()</P><P>bbb=cmd("@bbb")
rrr=cmd("@return_value")
%>
Top
回复人: inelm(木野狐) ( ) 信誉:133 2004-04-26 01:15:01Z 得分:1
 
http://computer.blogger.cn/archimond/posts/2730.aspx
Top
回复人: lbIlj() ( ) 信誉:100 2004-04-26 08:49:25Z 得分:0
 
大家说说会不会与环境有关系呢?因为我以前可以调用的一个存储过程现在调用不了了。我的sql server中过一次毒。我重新装了sql server,还装了.net不知道这些会不会有影响,但是我在sql 查询分析器里面又是可以运行存储过程的。
Top
回复人: pcvc(www.pcvc.net欢迎您!) ( ) 信誉:93 2004-04-26 09:55:17Z 得分:29
 
我的例子:

rs.Open "EXEC pr_testAdd @DSort='" & sort1 & "', @Forum_ID=" & request("forum_id") & ", @DefDate='" & defDate & "' with recompile", my_conn

直接操作记录集rs就行了。
0 0

相关博文

我的热门文章

img
取 消
img