苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4450|回复: 4

[其他] 为过程或函数指定了过多的参数。

[复制链接]
发表于 2013-6-9 11:20:42 | 显示全部楼层 |阅读模式
public void AlterInvoiceState(int InvoiceID, int State, string Remark)
        {
            string procName = "dbo.P_Invoice_AlterInvoiceState";
            SqlParameter[] prams ={new SqlParameter("@InvoiceID",SqlDbType.Int),
                                   new SqlParameter("@State",SqlDbType.Int),
                                   new SqlParameter("@Remark",SqlDbType.VarChar,500),
                                   new SqlParameter("@Ending", SqlDbType.VarChar, 500)
                                  };
            prams[0].Value = InvoiceID;
            prams[1].Value = State;
            prams[2].Value = Remark;

            try
            {
                SqlServerHelper.RunExecute(procName, prams);
            }
            catch (Exception)
            {

                throw;

            }

        }



BLL

public void AlterInvoiceState(int InvoiceID, int State, string Remark)
        {
            try
            {
                DAL.AlterInvoiceState(InvoiceID, State, Remark);
            }
            catch (Exception)
            {

                throw;
            }
        }


CS代码
im.AlterInvoiceState(Convert.ToInt32(Request.QueryString["InvoiceID"]), 0, inv.Ending + this.txtEnding.Text + "审核人:" + ((User)Session["user"]).UserName);






1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-6-9 11:48:37 | 显示全部楼层
[code=sql]@InvoiceID int,
@Ending VARCHAR(500),
@State int[/code]
这不是只有三个参数吗?
你在程序里为什么要写四个呢,
[code=csharp]SqlParameter[] prams ={new SqlParameter("@InvoiceID",SqlDbType.Int),
                                   new SqlParameter("@State",SqlDbType.Int),
                                   new SqlParameter("@Ending", SqlDbType.VarChar, 500)
                                  };
            prams[0].Value = InvoiceID;
            prams[1].Value = State;
            prams[2].Value = Remark;[/code]
这样就行了


[code=csharp]   new SqlParameter("@Remark",SqlDbType.VarChar,500),[/code]把这个参数删除就行了

发表于 2013-6-9 11:36:29 | 显示全部楼层
  SqlParameter[] prams ={new SqlParameter("@InvoiceID",SqlDbType.Int),
                                   new SqlParameter("@State",SqlDbType.Int),
                                   new SqlParameter("@Remark",SqlDbType.VarChar,500),
                                   new SqlParameter("@Ending", SqlDbType.VarChar, 500)
                                  };
上面是四个参数
            prams[0].Value = InvoiceID;
            prams[1].Value = State;
            prams[2].Value = Remark;
这里你只写了三个,问题应该不在这里
你看看存储过程 里面有几个参数
dbo.P_Invoice_AlterInvoiceState这个应该是你的存储过程,程序和存储过程的参数要一样多,名称,类型都必须是一样的才行
 楼主| 发表于 2013-6-9 11:43:52 | 显示全部楼层
站长苏飞 发表于 2013-6-9 11:36
SqlParameter[] prams ={new SqlParameter("@InvoiceID",SqlDbType.Int),
                             ...
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go







ALTER PROCEDURE [dbo].[P_Invoice_AlterInvoiceState]
(@InvoiceID int,
@Ending VARCHAR(500),
@State int
        )
AS

        UPDATE Invoice
        SET
        State=@State,
        Ending=@Ending

        WHERE InvoiceID=@InvoiceID
        RETURN

这个是存储过程
 楼主| 发表于 2013-6-9 12:15:57 | 显示全部楼层
站长苏飞 发表于 2013-6-9 11:48
这不是只有三个参数吗?
你在程序里为什么要写四个呢,

非常感谢飞哥
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 16:35

© 2014-2021

快速回复 返回顶部 返回列表