存储过程执行不成功

问题描述

我在oracle数据库写了一个存储过程,有一个参数,PL/SQL里面输入参数执行能得到结果,但是用C#调用的时候输入相同参数得不到结果using(OracleConnectionconnection=newOracleConnection(connectionStringERP)){connection.Open();OracleCommandcmd=connection.CreateCommand();cmd.CommandType=CommandType.StoredProcedure;cmd.CommandText="CUX_ONT_GATEWAY_UTL.cux_ont_create";cmd.Parameters.Add("P_REQUEST_NUM",OracleType.VarChar).Direction=ParameterDirection.Input;cmd.Parameters["P_REQUEST_NUM"].Value="427308";introw=cmd.ExecuteNonQuery();returnrow;}代码就是简单调用存储过程

解决方案

解决方案二:
实在找不到原因,单步调试吧http://www.cnblogs.com/zgqys1980/archive/2012/02/07/2341406.html
解决方案三:
难道都没有出异常,也不贴出错误,看不出来什么的。在using里加个断点调试测试。
解决方案四:
你存储过程连续两次都输入一样的参数执行,也不见得第二次也会有结果比如存储过程执行删除,你输入1,就把id为1的行删除了,你再执行,当然就找不到这一行了
解决方案五:
你存储过程里面是咋样实现的,实现的是啥功能。
解决方案六:
那就是你代码有问题了,不成功有错误信息么?
解决方案七:
目测这么写没什么问题,所以只能逐步调试。oracle比较麻烦,如果是sqlserver可以使用profile监视sql。
解决方案八:
肯定是PLsql中执行了一遍,如何把库中的数据处理掉了;然后数据忘了还原直接那C#去执行这个过程了;相当于PLsql执行了2次,第一次执行成功了,第二次挂掉了,因为第一次把数据删了,真逗
解决方案九:
引用2楼duanzi_peng的回复:

难道都没有出异常,也不贴出错误,看不出来什么的。在using里加个断点调试测试。

我在pl/sql里面直接输入参数就可以得到结果,但是用程序输入参数就得不到相同的结果,用程序能调试存储过程?
解决方案十:
引用7楼gucangen的回复:

肯定是PLsql中执行了一遍,如何把库中的数据处理掉了;然后数据忘了还原直接那C#去执行这个过程了;相当于PLsql执行了2次,第一次执行成功了,第二次挂掉了,因为第一次把数据删了,真逗

我是在pl/sql里直接输参数能得到结果,但是c#调用得不到结果
解决方案十一:
引用6楼smthgdin的回复:

目测这么写没什么问题,所以只能逐步调试。oracle比较麻烦,如果是sqlserver可以使用profile监视sql。

程序可以监视存储过程?
解决方案十二:
我来给你顶一顶么么哒解决了一定要告诉我哟小丁丁
解决方案十三:
引用7楼gucangen的回复:

肯定是PLsql中执行了一遍,如何把库中的数据处理掉了;然后数据忘了还原直接那C#去执行这个过程了;相当于PLsql执行了2次,第一次执行成功了,第二次挂掉了,因为第一次把数据删了,真逗

怎么可能犯这么二的问题,每次操作之后都进行数据恢复。这个问题业务上是处理ERP系统的物料发运单的,即便是新的单子,直接用C#程序调用就不行,直接在PLSQL中执行就可以,不会是数据的问题,这个我可以保证。一直到现在都没有解决。
解决方案十四:
引用12楼nanfeng0230的回复:

Quote: 引用7楼gucangen的回复:
肯定是PLsql中执行了一遍,如何把库中的数据处理掉了;然后数据忘了还原直接那C#去执行这个过程了;相当于PLsql执行了2次,第一次执行成功了,第二次挂掉了,因为第一次把数据删了,真逗

怎么可能犯这么二的问题,每次操作之后都进行数据恢复。这个问题业务上是处理ERP系统的物料发运单的,即便是新的单子,直接用C#程序调用就不行,直接在PLSQL中执行就可以,不会是数据的问题,这个我可以保证。一直到现在都没有解决。

对存储过程就是执行ERP系统的物料搬运单,但是用C#调就是不行,直接在PLSQL中执行就行,并没有执行两次,每次都是新建的单子然后执行的,但是出不同的结果,一个能处理成功物料搬运单,一个是处理异常,所以请问有啥办法没?
解决方案十五:
1.检查数据是否连接正确2.试试直接写SQL用Command执行,不要使用传参数的方式,比如”exec......“3....如果上面两步都ok那就使用这种方式吧,毕竟我不能在你那边调试,也不知道,你这里面到底是哪一步出问题了。
其他方案:
试着在存储过程里面手动添加commit看看效果,如果像你说的那样子,不是数据问题,也不是参数类型不一致引起的,那只能怀疑一个东西,就是oracle自己执行存储过程后会默认加个提交动作,这个是你直接执行存储过程时候有的,代码执行存储过程也会加,可不是马上就做的,你就强制让它提交一个,看看是不是就好了

时间: 2024-07-28 14:55:24

存储过程执行不成功的相关文章

用存储过程执行Insert和直接执行Insert的性能比较

比较|存储过程|性能|执行     最近写一个程序将IP与所在地区的列表有纯文本文件导入到数据库中,一开始使用的是直接用SqlCommand执行Insert语句,后来知道了SQL Server能够对存储过程进行优化,省去了对语句进行分析的时间,比直接用Insert语句要快一些.我就把Insert语句放在了一个临时存储过程中,用这个临时存储过程进行Insert操作,并粗略测试了两者执行的时间. 存储过程为: CREATE PROCEDURE #InsertIPData@StartIP nvarch

在ASP.NET中用存储过程执行SQL语句

  存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程.by google 存储过程执行效率比单独的SQL语句效率高. 样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下. 比如,创建一个存储过程 create procedure procNewsSelectNewNews as begi

c#-C# 单步执行可以成功,直接运行却不能成功

问题描述 C# 单步执行可以成功,直接运行却不能成功 # # 程序从timer2中执行到if (str1.Equals("""")) # { # timer2.Enabled = false; # textBox3.Text = ""从联网状态变为断网,跳回到短间隔状态:""; # timer1.Enabled = true; # timer1.Interval = 2000; # } # # 这段代码后,跳到timer1中,

mysql-请教存储过程执行很慢,如何优化?

问题描述 请教存储过程执行很慢,如何优化? BEGIN DECLARE personPlaneId BIGINT; DECLARE starttime datetime; #开始时间 DECLARE endtime datetime; #结束时间 DECLARE sumStudyTime INT; #当前学时 DECLARE targetStudyTime INT; #目标学时 DECLARE id1_count BIGINT default 0; #t_stage_info 第一阶段count

oarcle 存储过程-存储过程执行报错,请专家指教

问题描述 存储过程执行报错,请专家指教 create or replace procedure get_accu_info_proc(p_id pm_accu_t.accu_id%type) as v_name pm_accu_t.accu_name%type; begin select accu_name into v_name from pm_accu_t where accu_id = p_id; dbms_output.put_line(v_name); end get_accu_inf

DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息

原文:DBA工具--DMV--通过sys.dm_exec_procedure_stats查看存储过程执行信息 对于DBA来说,经常要手机存储过程的某些信息: 执行了多少次 执行的执行计划如何 执行的平均读写如何 执行平均需要多少时间 列名 数据类型 说明 database_id int 存储过程所在的数据库 ID. object_id int 存储过程的对象标识号. type char(2) 对象的类型: P = SQL 存储过程 PC = 程序集 (CLR) 存储过程 X = 扩展存储过程 t

cursor-mysql中存储过程无法创建成功

问题描述 mysql中存储过程无法创建成功 delimiter $$ BEGIN DECLARE iti varchar(25); declare maj varchar(25); declare cla tinyint(1); declare buffer tinyint(1); declare grd enum('2014级','2012级','2013级'); declare mycur CURSOR for select institude,major,grade,class from

出错-SQL Server 2008 执行UPDATE成功后查询不到执行的结果

问题描述 SQL Server 2008 执行UPDATE成功后查询不到执行的结果 平台:SQL Server 2008 R2,Windows Server 2008 执行内容: UPDATE [TAB_CHANGE] SET [STATUS] = 1 WHERE [TABNAME] = 'ITEM' select * from TAB_CHANGE where STATUS = 1 如果在查询分析器中选中两个SQL一起执行,就有结果集,显示更新成功了,但是如果单独执行第一句,在控制台可以看到"

hql-hibernate执行删除,用属性的属性做条件,但执行不成功

问题描述 hibernate执行删除,用属性的属性做条件,但执行不成功 String hql =""delete from FinalSalary fs where fs.emp.deptno = ?"";这是我写的