前些天写用户注册模块,用存储过程添加用户,一开始就报“为过程或函数sp_Adduser指定了过多的参数”。仔细检查数据层的用户添加函数,结果在为存储过程添加sqlparameter参数的时候,数组给写错位了(参数太多)。改正后,编译执行,结果还是报“为过程或函数sp_Adduser指定了过多的参数”。自己把存储过程程序对照了好几遍,没问题。到网上搜索,原来在执行存储过程的时候,如果以sp开头,用户创建的存储过程,总会先检查master数据库(即使该存储过程已用数据库名称限定)。 如果用户创建的存储过程与系统存储过程同名,则永远不执行用户创建的存储过程
自己平时还真没注意,我命名的sp_Adduser就是系统的存储过程,难怪不能执行,所以以后写存储过程最好别以sp开头,一不注意就会发生冲突。比如,sp_adduser,sp_addmessage,我们也会容易起这样的名,但是和系统存储过程是冲突,你自己定义的是不会被执行的,所以总是会报“为过程或函数指定了过多的参数”的错误。http://blog.csdn.net/sandyxxx/article/details/4129245
此外,如果是带参数的存储过程则,可以看下Params里参数是否比proc_checkhistory里的参数个数多
时间: 2024-10-31 16:28:40