ASP调用存储结构失败,请问原因

xarrow 2003-12-07 10:34:18
数据库为:SQL Server 2000

存储结构如下:

CREATE PROCEDURE getsinfo @cid int
AS
select * from c where id=@cid
(语法检测通过)

代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
dim param
set cm=server.CreateObject("adodb.command")

set conn=server.createobject("adodb.connection")

aconnectionstring="provider=SQLOLEDB;data"_

&"source=(local);database=test;"_

&"UID=sql;PWD=;"

conn.connectionstring=aconnectionstring

conn.mode=admodereadwrite

set cm.activeconnection=conn ‘页面提示本行出错:800a0e7d|请求操作需要

_OLE_DB_会话对象,而当前提供程序不支持此条件

set param=cm.createparameter("cid",adinteger,adparaminput,4,2)

cm.parameters.append param

cm.commandtext="getsinfo" 'getsinfo 为存储结构名

cm.commandtype=adcmdstoreproc

conn.open

set rs=cm.execute()

if not rs.eof then
%>
......

除了页面提示的地方出错外,我还不知道还有错误没,请同志们帮忙!
如有可能,谁有调试通过的调用程序,回复给我看看(包括数据库的设置)
...全文
49 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nchen123 2003-12-09
  • 打赏
  • 举报
回复
K,
还是失败了, inelm(Archimond 【阿克蒙德】我按你的改了但
提示:
set param=cm.createparameter("cid",adinteger,adparaminput,4,2)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。 500
cid为存储结构的输入参数

=============================

你没有引用 adovbs.inc 这个文件。

找到这个文件, 放在同一个目录下, 然后在

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
下面添加一行:

<!--#include file="adovbs.inc"-->
xarrow 2003-12-09
  • 打赏
  • 举报
回复
是的,我看了,但我以为系统在装IIS的时候,会自动解析,呵呵
nchen123 2003-12-09
  • 打赏
  • 举报
回复
如果你清楚的知道这些常数值, 你也可以不引用这个文件, 直接用整数来代替

但是不推荐这么做, 最好还是用有意义的常数名。
nchen123 2003-12-09
  • 打赏
  • 举报
回复
adovbs.inc

这个文件你自己打开看看就知道了, 全部是 ado 中常用的一些常数的定义, 比如 你上面程序中用到的 adinteger,adparaminput 等等,都可以找到他们的常数值。
如果你清楚的知道这些常数值, 你也可以不引用这个文件, 直接用整数来代替。

你想想, 如果这些常数没有被定义, 那 iis 当然没法解释了, 所以丢给你一个

“参数类型不正确,或不在可以接受的范围之内” 的错误。
xarrow 2003-12-09
  • 打赏
  • 举报
回复
哎呀,大哥,终于是搞定了,但是不明白为什么要<!--#include file="adovbs.inc"-->
IIS不能自己解析吗?还有其他的什么要注意的地方,还请大哥指点一二,虽然结贴了,还希望老兄能给我再上一课啊
nchen123 2003-12-08
  • 打赏
  • 举报
回复
你没有打开数据库连接, 前面一段代码要改成这样:

<%
dim param
set cm=server.CreateObject("adodb.command")

set conn=server.createobject("adodb.connection")

aconnectionstring="provider=SQLOLEDB;data"_

&"source=(local);database=test;"_

&"UID=sql;PWD=;"

conn.Open(aconnectionstring)

set cm.activeconnection=conn ‘页面提示本行出错:800a0e7d|请求操作需要

_OLE_DB_会话对象,而当前提供程序不支持此条件
fbc7758 2003-12-08
  • 打赏
  • 举报
回复
我不知道
但我很想知道
我也对这个不熟
只有顶了
xarrow 2003-12-08
  • 打赏
  • 举报
回复
K,
还是失败了, inelm(Archimond 【阿克蒙德】我按你的改了但
提示:
set param=cm.createparameter("cid",adinteger,adparaminput,4,2)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。 500
cid为存储结构的输入参数

数据库的结构是:
id cname teacher
1 dfsd dfsdf
2 dfsdf dfdf
3 dfdf dfdf

存储过程名:getsinfo

CREATE PROCEDURE getsinfo @cid int
AS
select * from c where id=@cid

想来应该很简单的,肯定是某个小地方出了问题,但出来真的让人很郁闷啊

全部代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%

dim param

dim sqname

set conn=server.createobject("adodb.connection")

aconnectionstring="provider=SQLOLEDB;data"_
&"source=(local);database=test;"_
&"UID=sql;PWD=;"
conn.connectionstring=aconnectionstring
conn.mode=admodereadwrite
conn.open

set cm=server.CreateObject("adodb.command")

set cm.activeconnection=conn

set param=cm.createparameter("cid",adinteger,adparaminput,4,2)

cm.parameters.append param

cm.commandtext="getsinfo"

cm.commandtype=adcmdstoreproc

set rs=cm.execute()

if not rs.eof then

%>

<html>
<head>
<title>欢迎</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><%=rs("cname")%></td>
</tr>
</table>
</body>
</html>
<%
else
response.write"对不起,目前尚无记录!"&"   <a href='#' onclick='javascript:history.back()'>返回</a>"
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
bzscs 2003-12-08
  • 打赏
  • 举报
回复
建立存储过程的时候,sqlserver就已经自动编译了,不必担心这个问题
xarrow 2003-12-08
  • 打赏
  • 举报
回复
哦,试试先,那关于第二个问题,也请老兄指点了啊,鸟毕竟是鸟,还要高手指教
xarrow 2003-12-07
  • 打赏
  • 举报
回复
补充一个问题,怎么来预编译,是第一次运行该ASP页面时就由ASP来执行还是需要人工在建完存储结构后在SQL Server里编译

28,407

社区成员

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

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