大虾们帮忙?asp调SYBASE 的存储过程的错误

BLUECAT 2000-07-23 06:06:00
GEN#R_TRANEXECTOTAL这个存储过程需两个参数

Set Cmd=Server.CreateObject("ADODB.Command")
Cmd.ActiveConnection=DSN
Cmd.CommandText="GEN#R_TRANEXECTOTAL"
Set Parm1=Cmd.CreateParameter("@KEYNOSTR",AdChar,adParamInput,12,keyno)
Cmd.Parameters.Append Parm1
Set Parm2=Cmd.CreateParameter("@INT_CONDITION",AdSmallInt,adParamInput,,0)
Cmd.Parameters.Append Parm2
rstemp.Open Cmd

运行时总是出现这种错误:

[INTERSOLV][ODBC SQL Server driver][SQL Server]Procedure GEN#R_TRANEXECTOTAL expects parameter @KEYNOSTR, which was not supplied.

请问如何解决?
...全文
111 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntout 2000-07-24
  • 打赏
  • 举报
回复
把@去掉。
Set Cmd=Server.CreateObject("ADODB.Command")
Cmd.ActiveConnection=DSN
Cmd.CommandText="GEN#R_TRANEXECTOTAL"
Set Parm1=Cmd.CreateParameter("KEYNOSTR",AdChar,adParamInput,12,keyno)
Cmd.Parameters.Append Parm1
Set Parm2=Cmd.CreateParameter("INT_CONDITION",AdSmallInt,adParamInput,,0)
Cmd.Parameters.Append Parm2
rstemp.Open Cmd

Tyro 2000-07-24
  • 打赏
  • 举报
回复
下面是一个msdn中的例子:

Append 和 CreateParameter 方法范例
该范例使用 Append 和 CreateParameter 方法执行具有输入参数的存储过程。
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

' 打开连接。
Set cnn1 = New ADODB.Connection
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
cnn1.Open strCnn
cnn1.CursorLocation = adUseClient
' 使用单一参数打开命令对象。
Set cmdByRoyalty = New ADODB.Command
cmdByRoyalty.CommandText = "byroyalty"
cmdByRoyalty.CommandType = adCmdStoredProc
' 获取参数值并追加参数。
intRoyalty = Trim(InputBox("Enter royalty:"))
Set prmByRoyalty = cmdByRoyalty.CreateParameter("percentage", _
adInteger, adParamInput)
cmdByRoyalty.Parameters.Append prmByRoyalty
prmByRoyalty.Value = intRoyalty
' 通过执行命令创建记录集。
Set cmdByRoyalty.ActiveConnection = cnn1
Set rstByRoyalty = cmdByRoyalty.Execute
' 打开 Authors 表以获取作者姓名进行显示。
Set rstAuthors = New ADODB.Recordset
rstAuthors.Open "authors", cnn1, , , adCmdTable
' 打印记录集中的当前数据,从 Authors 表中添加作者姓名。
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
Tyro 2000-07-24
  • 打赏
  • 举报
回复
在调用Append方法前须将CursorLocation属性设置为adUseClient。
对打开的 Recordset 或已设置ActiveConnection属性的Recordset,调用其 fields.Append 方法将引发运行时错误。
huntout 2000-07-24
  • 打赏
  • 举报
回复
Set Parm2=Cmd.CreateParameter("INT_CONDITION",AdSmallInt,adParamInput,,0)
---------------------------->(

給出錯誤信息!
BLUECAT 2000-07-24
  • 打赏
  • 举报
回复
把@去掉还是同样错误呀

28,390

社区成员

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

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