首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 这段代码里调用存储过程中,是哪里出错了?老提示我没有但未提供参数 [无满意答案结贴,结贴人:cd87279798]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-20 18:04:05 楼主
    存储过程是
    CREATE PROCEDURE jiafa
    @UserID int,
    @UserName varchar(40) output
    as
    set nocount on
    begin
    if @UserID is null return
    select user_name = @UserName
    from user_list
    where user_id=@UserID
    return
    end
    GO

    调用代码是
    DIM UserID,UserName,cmd
    UserID = 1
    set cmd=server.CreateObject("adodb.command")
    set cmd.ActiveConnection=conn
    CommandType = 4
    cmd.Prepared = true
    cmd.CommandText="jiafa"
    cmd.parameters.Append cmd.CreateParameter("@UserID",3,1,4,UserID)
    cmd.parameters.Append cmd.CreateParameter("@UserName",200,2,40)
    cmd.Execute    //这行报错了


    错误提示是:错误类型:
    Microsoft OLE DB Provider for SQL Server (0x80040E10)
    过程 'jiafa' 需要参数 '@UserID',但未提供该参数。

    我觉得奇怪了,UserID = 1,这里不是指定了值了吗?怎么说我没有提供参数


    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 11:25:011楼 得分:0
    请大家帮帮忙,卡在这里很久了,急...谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 11:49:242楼 得分:0
    ....
    @UserID = 1
    看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 11:53:383楼 得分:0
    chinmo,请问可以加QQ吗?我的是 66778560,我常年在线的.
    把UserID = 1 改成@UserID = 1
    错误类型:
    Microsoft VBScript 编译器错误 (0x800A0408)
    无效字符
    /bbs/up/welcome.asp, line 4
    @UserID = 1

    <%
    DIM cmd,UserID,UserName
    @UserID = 1
    set cmd=server.CreateObject("adodb.command")
    set cmd.ActiveConnection=conn
    CommandType = 4
    cmd.Prepared = true
    cmd.CommandText="jiafa"
    cmd.parameters.Append cmd.CreateParameter("@UserID",3,1,4,UserID)
    cmd.parameters.Append cmd.CreateParameter("@UserName",200,2,40)
    cmd.Execute
    Set cmd = Nothing
    %>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 11:58:444楼 得分:0
    存储过程是
    CREATE PROCEDURE jiafa
    @UserID int = 1 ,
    @UserName varchar(40) output
    as
    set nocount on
    begin
    if @UserID is null return
    select user_name = @UserName
    from user_list 
    where user_id=@UserID
    return
    end
    GO

    看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 12:12:165楼 得分:0
    把存储过程改成
    CREATE PROCEDURE jiafa 
    @UserID int = 1 , 
    @UserName varchar(40) output 
    as 
    set nocount on 
    begin 
    if @UserID is null return 
    select user_name = @UserName 
    from user_list 
    where user_id=@UserID 
    return 
    end 
    GO 

    又提示错误类型:
    Microsoft OLE DB Provider for SQL Server (0x80040E10)
    过程 'jiafa' 需要参数 '@UserName',但未提供该参数。
    /bbs/up/welcome.asp, 第 12 行

    不会吧,@UserName varchar(40) output,输出参数怎么要求提供参数??
    到底是存储过程写得错误??还是调用出错?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 13:09:056楼 得分:0
    cmd.CommandType = 4
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 13:10:427楼 得分:0
    cmd.parameters.Append cmd.CreateParameter("@UserName",200,2,40,UserName)
    output 的参数也要传变量
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved