*/
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就行了。
|
|