重分改错??? 决不食言!!! 快来把!!!

crs77 2000-07-10 10:43:00
<%set cn=server.createobject("adodb.connection")
cn.open "yy1_97","crs","crscrscrs"
' DSN user password
set cm=server.createobject("adodb.Command")
set cm.activeconnection=cn
cm.commandtype=4
cm.commandtext="crs1"
cm.Parameters.Refresh
set p=cm.parameters
p.append cm.createparameter("a1",202,1,50)
cm("a1").value ="3333"
'p.append cm.createparameter("a2",201,3,250)
'cm("a2").value =" "
cm.execute
cn.close
set cn=nothing

%>

ORACLE过程:-----
PROCEDURE CRS1 (A1 IN VARCHAR2,
A2 OUT VARCHAR2) IS
BEGIN
A2:=A1;
END;
----------
出错语句: cm.execute

出错提示:

ADODB.Command error '800a0e7c'

The application has improperly defined a Parameter object.
--------
...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy 2000-07-11
  • 打赏
  • 举报
回复
A1,A2是varchar2类型字段,对应Createparameter的第二个参数应为adVarChar,即200。
TopHead 2000-07-11
  • 打赏
  • 举报
回复
<%set cn=server.createobject("adodb.connection")
cn.open "yy1_97","crs","crscrscrs"
' DSN user password
set cm=server.createobject("adodb.Command")
set cm.activeconnection=cn
cm.commandtype=4
cm.commandtext="crs1"
cm.Parameters.Refresh
set p=cm.parameters
p.append cm.createparameter("a1",202,1,50)
cm("a1").value ="3333"
'p.append cm.createparameter("a2",201,3,250)
'cm("a2").value =" "
cm.execute
cn.close
set cn=nothing

%>
该成:
<%set cn=server.createobject("adodb.connection")
cn.open "yy1_97","crs","crscrscrs"
' DSN user password
set cm=server.createobject("adodb.Command")
set cm.activeconnection=cn
cm.commandtype=4
cm.commandtext="crs1"
cm.parameters("a1").value ="3333"
cm.execute
cn.close
set cn=nothing

%>

肯定可以:)


Tyro 2000-07-11
  • 打赏
  • 举报
回复
如果你使用cm.Parameters.Refresh
就不要用p.append cm.createparameter("a1",202,1,50)
直接写cm.Parameters("@a1").Value="3333"

如果要用p.append cm.createparameter("a1",202,1,50)
就把cm.Parameters.Refresh去掉
华南虎哥 2000-07-11
  • 打赏
  • 举报
回复
你可以对照一下下面代码:
Public Sub AppendX()

Dim cnn1 As ADODB.Connection
Dim cmdByRoyalty As ADODB.Command
Dim prmByRoyalty As ADODB.Parameter
Dim rstByRoyalty As ADODB.Recordset
Dim rstAuthors As ADODB.Recordset
Dim intRoyalty As Integer
Dim strAuthorID As String
Dim strCnn As String

' Open connection.
Set cnn1 = New ADODB.Connection
strCnn = "driver={SQL Server};server=srv;" & _
"uid=sa;pwd=;database=pubs"
cnn1.Open strCnn
cnn1.CursorLocation = adUseClient

' Open command object with one parameter.
Set cmdByRoyalty = New ADODB.Command
cmdByRoyalty.CommandText = "byroyalty"
cmdByRoyalty.CommandType = adCmdStoredProc

' Get parameter value and append parameter.
intRoyalty = Trim(InputBox("Enter royalty:"))
Set prmByRoyalty = cmdByRoyalty.CreateParameter("percentage", _
adInteger, adParamInput)
cmdByRoyalty.Parameters.Append prmByRoyalty
prmByRoyalty.Value = intRoyalty

' Create recordset by executing the command.
Set cmdByRoyalty.ActiveConnection = cnn1
Set rstByRoyalty = cmdByRoyalty.Execute

' Open the Authors table to get author names for display.
Set rstAuthors = New ADODB.Recordset
rstAuthors.Open "authors", cnn1, , , adCmdTable

' Print current data in the recordset, adding
' author names from Authors table.
Debug.Print "Authors with " & intRoyalty & " percent royalty"
Do While Not rstByRoyalty.EOF
strAuthorID = rstByRoyalty!au_id
Debug.Print " " & rstByRoyalty!au_id & ", ";
rstAuthors.Filter = "au_id = '" & strAuthorID & "'"
Debug.Print rstAuthors!au_fname & " " & rstAuthors!au_lname
rstByRoyalty.MoveNext
Loop

rstByRoyalty.Close
rstAuthors.Close
cnn1.Close

End Sub
如果有所思,就行了

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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