存储过程-“为过程或函数指定了过多的参数”的错误

最近在忙公司的一个项目,其中一个模块要用到存储过程,在程序中存储过程的具体执行过程中竟然报了“为过程或函数指定了过多的参数”的错误。仔细比较程序中的存储过程与数据库中的定义,发现两者并未出现差别。没法,只有硬着头皮一点一点的比对,半个小时过去了还是未找到错误的根源。无奈之下,只好请教其他大神。大神不愧是大神吗,只问了我一句,你的库确定连对了吗?顿时觉醒了,我配置文件中连接的是远程库,改为本地库以后程序顺利进行。

在解决问题百度的过程中,我发现出现这个错误还可能是以下几种情况:

1、存储过程命名以sp开头

如果以sp开头,用户创建的存储过程总会首先检查master数据库。如果用户创建的存储过程与系统存储过程同名,则永远不会执行用户创建的存储过程。

2、规则不统一

存储过程名称或其定义的参数个数与程序中指定的参数个数不一致,这个错误比较低级,但是有时候我们也会犯

3、数据库调用错误

这也就是我也到的错误,未修改配置文件中的连接字符串

常见的错误已经列举出来了,具体的解决方法就不再累述了。希望对大家有帮助。

时间: 2025-01-17 06:53:51

存储过程-“为过程或函数指定了过多的参数”的错误的相关文章

为过程或函数sp_Adduser指定了过多的参数

前些天写用户注册模块,用存储过程添加用户,一开始就报“为过程或函数sp_Adduser指定了过多的参数”.仔细检查数据层的用户添加函数,结果在为存储过程添加sqlparameter参数的时候,数组给写错位了(参数太多).改正后,编译执行,结果还是报“为过程或函数sp_Adduser指定了过多的参数”.自己把存储过程程序对照了好几遍,没问题.到网上搜索,原来在执行存储过程的时候,如果以sp开头,用户创建的存储过程,总会先检查master数据库(即使该存储过程已用数据库名称限定).   如果用户创建

Oracle学习笔记十二 子程序(存储过程、自定函数)和程序包

子程序 子程序:命名的 PL/SQL 块,编译并存储在数据库中. 子程序的各个部分: 1.声明部分 2.可执行部分 3.异常处理部分(可选) 子程序的分类: 1.过程 - 执行某些操作 2.函数 - 执行操作并返回值 子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全 存储过程 过程是用于完成特定任务的子程序. 例如: 一个购票过程可以分为很多个子过程,分别完成. 创建存储过程 创建过程的语法: CREAT

ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE PL/SQL编程之八:把触发器说透 得到了大家的强力支持,感谢.接下来再下猛药,介绍下一篇,大家一定要支持与推荐呀~!我也才有动力写后面的.   本篇主要内容如下: 6.1 引言 6.2 创建函数 6.3 存储过程 6.3.1 创建过程 6.3.2 调用存储过程 6.3.3 AUTHID 6.3.4 

微软未公开存储过程及有用的函数

原文:微软未公开存储过程及有用的函数 从网上收集,有些已经在2008不支持或者后续版本不支持,所以需要慎用. XP_FileExist: 用法:EXEC xp_fileexist <filename> [, <file_exists INT> OUTPUT] 例子:exec master.dbo.xp_fileexist 'C:\temp' SP_MSForEachDb: 例子1:exec dbo.sp_MSforeachdb 'select ''?'', * from [?].I

Oracle过程及函数的参数模式详解

一.In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: (1)in模式 in模式是引用传递.调用过程时实际参数将值以引用方式传递给存储过程的形式参数,形式参数在过程中是只读模式的,也就是说:只能通过形式参数读取到实际参数的值.当过程执行完毕后,实际参数的值不会发生任何变化. 过程: create or replace procedure MyProcedure(param1 in IN

Oracle数据库之PL/SQL过程与函数

Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后再次

过程与函数

过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,被编译后存储在数据库中,并通过输入.输出参数或输入/输出参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据. 一 创建函数 1 创建函数 语法: 1 CREATE [OR REPLACE] FUNCTION function_name 2 (arg1 [ { IN | OUT | IN OUT }] type1 [DEFAULT value1], 3 [arg2 [ { IN | OUT |

第六课 过程与函数

这讲是核心重点***** 什么是过程?什么又是函数?过程和函数在delphi中无处不再.过程简单的理解就是单击一个按钮这就是一个过程,函数和过程不一样的地方就是函数能把这个过程的结果返回给我们,过程的关键字用procedure ,函数的关键字Function  下面就具体讲解过程与函数的定义 过程与函数 Pascal中的例程有两种形式:过程和函数.理论上说,过程是你要求计算机执行的操作,函数是能返回值的计算.两者突出的不同点在于:函数能返回计算结果,即有一个返回值,而过程没有.两种类型的例程都可

视图,触发器,事物,储存过程,函数,流程控制

一视图  建表 create database o; use o; create table teacher( tid int primary key auto_increment, tname char(32) ); insert into teacher(tname) values ('张磊老师'),('李平老师'),('刘海燕老师'),('朱云海老师'),('李杰老师'); create table course( cid int primary key auto_increment, c