存储过程 使用for循环更新执行 报错 ORA-06550

create or replace procedure test is
Cursor C_EMP is
select * from CST_TW_RECORD where GRANT_STATE = '0' and CLEAN_STATE = '3' ;
C_ROW C_EMP%ROWTYPE; --定义游标变量,该变量的类型为基于游标C_EMP的记录

begin
--For 循环

FOR C_ROW IN C_EMP LOOP
-- 更新清洗记录表
update CST_TW_RECORD set GRANT_STATE = 1,GRANT_FIRST_DATE=sysdate,GRANT_DATE=sysdate,SELLER_ID = 2012999991,GRANT_REMARK = 11 where CUST_ID=C_ROW.CUST_ID ;
--更新客户表
update CST_CUSTOMER set APP_DATE = sysdate,PAST_DATE = sysdate,SELLER_ID = 2012999991,SELLER_DEPT_ID = 0001
where CUST_ID=C_ROW.CUST_ID ;
--踢出客户
UPDATE CST_CUSTOMER_EXTEND SET PUB_STATE = 1 WHERE CUST_ID =C_ROW.CUST_ID ;
end;
end LOOP;
end test;

--执行存储过程
begin
execute test ;
end;

图片说明

4个回答

首先是end loop
然后是end test
你多了一个end少年

首先是end loop然后是end test
前面你多了一个end

rowtype 要先 open,再使用 再 close;

qq_32504001
qq_32504001 不太明白,我记得是可以这样写的,可以的话,麻烦大神改写一下~~
接近 3 年之前 回复

是这样的,刚才调试的时候把end
去掉就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#执行Oracle存储过程 报Oracle-06550错误解决方法

用代码说明解决方法.在Oracle有一个存储过程,在用Oracle工具(Quest Toad)调试执行时没有任何问题,当在C#中调用此过程报Oracle-06550错误.一般的此存储过程具有调用参数.具体代码:Oracle后台的存储过程代码:Create Or Replace Procedure Lungu.Pro_Alert_Lunguid(In_LunguID  varch

使用PL/SQL中出现ORA-06550错误

在PL/SQL块中执行一个创建表的语法,如: begin     create table emp_tmp as select * from emp; end; 在SQL*plus中执行时会提示ORA-06550的错误。 这是因为在PL/SQL代码中只能使用DML语句,如果在代码中直接使用DDL语句,则会出现上述错误。在PL/SQL中处理DDL语句的方式是使用动态SQL,如果将上述代码改

mybatis 操作存储过程 小细节错误

项目开发的时候遇到一个错误:org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06550: 第 8 行, 第 4 列: PLS-00103: 出现符号 ";"在需要下列之一时: . ( ) , * @ % & = -

在存储过程利用游标循环执行update语句

初到公司的第一个工作任务:(用Oracle的job定时对一个值进行累加计算); 虽然比较简单,但是由于已经两年多没有用过存储过程和游标这些了,所以重新温习了下; 记下笔记 ========创建存储过程,定义游标循环执行update语句 create or replace procedure JOBTCOUNT as begin declare     cursor e

执行PL/SQL块时出现 ORA-06550 错误(批量建表)

SQL> select * from v$version;   BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi PL/SQL Release 10.2.0.4.0

ORA-06550: 第 1 行, 第 7 列: \nPLS-00306: 调用 'xxxxxx' 时参数个数或类型错误\nORA-06550: 第 1 行, 第 7 列: \nPL/SQL: Sta

关于ORACLE提示:"System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列: \nPLS-00306: 调用 'xxxxxx' 时参数个数或类型错误\nORA-06550: 第 1 行, 第 7 列: \nPL/SQL: Statement ignored\n\r\n 的错误 近来因为要做个外挂程序,调用的是OR

oracel存储过程 创建错误:ORA-06550: line 2, column 2:PLS-00905

环境:oracle 10g 当你运行存储过程时,异常。报下面的错误时 ORA-06550: line 2, column 2 PLS-00905:xxxxxx无效 PL/SQL: Statement ignored 这里你的存储过程创建通过,但运行错误。这可能是你的存储过程的语法有误而做成。如缺少分号、关键字写错、语句写进了错误的位置:如 我遇到的是语句写进了错误的位置

oracle 存储过程循环执行update语句

select column1 from table1 ;对column1进行update操作。由于update时,需要对column1进行特殊处理。如果是java程序里,可以先for循环,然后分别update。请问在存储过程里如何实现? 请写一个较为完成的存储过程。我会适当再加分的。谢谢! 2012-06-28 13:43 提问者采纳其实二楼写的最简单,但对于新手,最好别那么

Oracle存储过程中游标For循环使用

procedure copy(a_id int) is     cursor t_cursor is       select * from table f where f.id = a_id;       v_row table%rowtype; begin   for v_row in t_cursor loop     -- 处理数据   end loop

Plsql创建Job报错:ORA-06550

Plsql创建Job报错:ORA-06550

DB2存储过程中for循环的问题

在db2存储过程中,使用for循环的时候,我发现总是执行一次就不在执行,也就是不循环,原代码是这么写的:      --查出所有的产品号      FOR cur as select fsetcode                    from setlist                   where fyear = p_year order by fsetcode        DO        --插入临时表数据      CALL  sp_query_CIRC(char(cur.fsetc

PLS-00905: 对象 SCOTT.QUERYEMPINFO 无效;PL/SQL: Statement ignored

java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列: PLS-00905: 对象 SCOTT.QUERYEMPINFO 无效 ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored     at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoe

存储过程报错之后,后续语句如何执行,以及相关job下次执行时间怎样进行更新

通过测试得到以下结论: 1、存储过程中出现报错之后,从此报错点开始,后面所有语句都放弃执行 2、存储过程报错之后,JOB的下次执行时间不会按照interval的设置来更新,但如果存储过程的报错通过exception进行了捕获,则JOB的下次执行时间正常按照interval的设置来更新 3、存储过程中设立子程序捕获报错,在捕获点之后的语句会正常执行   下为测试过程   --创建临时表

Oracle存储过程执行update语句不报错不生效问题

转载链接:http://lin49940.iteye.com/blog/466626 今天一个同事写oracle 的存储过程遇到了一个问题, 他在里面update 操作不能完成更新的操作, 但是又不会报错.         如一个表 A(id, code, name, type)         在存储过程中的更新操作的语句: update A x set

解决问题:Oracle/PLSQL: ORA-06550

Home >Oracle/PLSQL >Oracle Error Messages Oracle/PLSQL: ORA-06550 Learn the cause and how to resolve the ORA-06550 error message in Oracle. Description When you encounter an ORA-06550

oracle ORA-06550

oracle ORA-06550

Oracle带游标的存储过程在plus中的调用实例

之前在帖子http://blog.csdn.net/szstephenzhou/article/details/7737342 里回答了一些网友的关于怎么穿件一个返回记录集合的存储过程。想必很多网友已经很明白了,这里就不多讲了,先在这个帖子主要回答百度知道http://zhidao.baidu.com/question/453032020.html?fr=uc_ma_push&fl=red&old

OracleClient.OracleException: ORA-06550: 第 1 行, 第 30 列: PLS-00302: 必须声明 'GET_AGE' 组件

在ASP.NET 数据访问层中,调用存储过程时,遇到了这个错误: {System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 30 列: PLS-00302: 必须声明 'GET_AGE' 组件ORA-06550: 第 1 行, 第 7 列:  原因:在Oracle数据库中,GET_AGE这个存储过程只在包体中有,而包头中并没有

基于ORACLE数据库的循环建表及循环创建存储过程的SQL语句实现

一、概述 在实际的软件开发项目中,我们经常会遇到需要创建多个相同类型的数据库表或存储过程的时候。例如,如果按照身份证号码的尾号来分表,那么就需要创建10个用户信息表,尾号相同的用户信息放在同一个表中。 对于类型相同的多个表,我们可以逐个建立,也可以采用循环的方法来建立。与之相对应的,可以用一个存储过程实现对所有表的操作,也可以循环建立存储过程,每个存储过程实现对某个特定表的操作。 本文中,我们

“ORA-06550: 第 1 行, 第 7 列”解决方法

ORA-06550: 第 1 行, 第 7 列: PLS-00201: identifier 'MONITORCHANGEPLS.MCP_ISCHANGE' must be declared ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored

oracle 动态调用存储过程,返回游标类型

 定义了一个存储过程procedure GetDate(aParam in varchar2,aExesql in out varchar2,aReturnSet out sys_refcursor ) isbeginselect sysdate into aExesql from dual;open aReturnSet for select sysdate today from dual;

Oracle 存储过程错误之PLS-00201: 必须声明标识符

错误: ORA-06550: 第 1 行, 第 7 列:  PLS-00201: 必须声明标识符'ZUO.PROCE_TEST' ORA-06550: 第 1 行, 第 7 列:  PL/SQL: Statement ignored 解决方法: (1)用户UserName授权: grant execute on Proc to UserName;  (2)查看存储过程属性

存储过程中循环的使用

/****** 对象: 存储过程 dbo.get_zb_count 脚本日期: 2007-05-18 15:34:33 ******/  CREATE PROCEDURE get_zb_count_3  @J_JID varchar(50),  @S_Area varchar(6000),  @K_ID varchar(50),  @zb_count int output

存储过程执行成功,就是修改不了数据

1:先看看数据库的emp表的数据类型 2:错误的姿势 3:正确的姿势 4:总结-解决问题的过程

Mysql存储过程(二):循环,游标,更新,参数输出y

drop procedure if exists hagonda_insert; create procedure hagonda_insert() begin declare b int default 0; -- 终止循环 declare y_id int; declare y_code8 varchar(8); declare y_codeValue varchar(20)

数据库之存储过程创建表以及for循环插入数据

CREATE PROCEDURE P_TEST1 IS V_SQL VARCHAR2(1000); BEGIN v_sql := 'CREATE TABLE P_TEST1_TABLE(P_ID NUMBER)'; EXECUTE IMMEDIATE v_sql; FOR i IN 1..100 LOOP v_sql := 'INSERT INTO P_TEST1_TABLE VALUES('

关于sql存储过程在IDE或数据库中执行报错的解决办法

最近由于项目中有些业务要用到存储过程来写,所以在数据库中添加了一个简单的存储过程,如下: ALTER PROCEDURE [dbo].[Test_addperson] @name AS varchar(20) , @password AS varchar(20) , @age AS int, @allCount int = 0 output--总数 AS BEGIN insert

oracle 执行包含update语句的存储过程并获取结果记录

存储过程: create or replace procedure updateJobContact (s in varchar, num out varchar ) AS s_sql varchar(5000) := ''; num1 number; begin s_sql := 'update t_dept_cont

SQLServer用存储过程实现插入更新数据

【创建存储过程】 Create proc Insert_Update     @Id varchar(20),     @Name varchar(20),     @Telephone varchar(20),     @Address varchar(20),   @Job varchar(20),    @returnValue int output

Java代码调用存储过程没反应

“花前对酒不忍触,共粉泪,两簌簌” 今天在用使用SSM框架的程序中调用存储过程.但是在控制台上打印出了调用存储过程的代码.可是数据表中就是没有改变. 存储过程:CREATE DEFINER=`root`@`%` PROCEDURE `proc_wash_quantitative_pay_info_2_salespersoninfo_month_copy2`() BEGIN DECLARE

Oracle 存储过程中的循环语句写法

资料来源:http://liliangjie.iteye.com/blog/812771 首先科普一下:  oracle 游标属性 sql%found sql%notfound sql%rowcount  当执行一条DML语句后,DML语句的结果保存在四个游标属性中,这些属性用于控制程序流程或者了解程序的状态。当运行DML语句时,PL/SQL打开一个内建游标并处理结果,游标是维护查询结果

Mysql创建存储过程,使用游标Cursor循环更新

使用游标(cursor) 1.声明游标 DECLARE cursor_name CURSOR FOR select_statement 这个语句声明一个游标。也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字。声明游标后也是单条操作的,但是不能用SELECT语句不能有INTO子句。 2. 游标OPEN语句 OPEN cursor_name 这个语句打开先前声明的

{"ORA-06550: 第 1 行, 第 7 列: /nPLS-00306: 调用 'NIEC_ADDUSER' 时参数个数或类型错误/nORA-06550: 第 1 行, 第 7 列: /nPL/SQL: Statement ignored/n"}

       这个问题困扰了我0.6个工作日,终于解决!存储过程如下:CREATE OR REPLACE PROCEDURE "NIEC_ADDUSER" --2007-5-25增加用户----〉普通(   Typeid   in char,    Name     in char,    Email    in char,    Password in char,    UserID  

mysql进阶:存储过程中的循环(WHILE DO and FOR LOOP)

WHILE DO drop procedure if exists p_while_do; create procedure p_while_do() begin declare i int; set i = 1; while i <= 10 do select concat('index : ', i);

【解决】EXP-00056 ORA-06550 PLS-00302 ORA-06550错误

在exp在导出时,出现下面错误。 EXP-00056:遇到ORACLE错误6550 ORA-06550:第1行,第41列: PLS-00302:必须说明'SET_NO_OUTLINES'组件 ORA-06550:第1行,第15列: PL/SQL: Statement ignored EXP-00000:导出终止失败   注意在exp导出时,Oracle exp导出的客户端的Orac

mysql 存储过程 declared局部变量 赋值失败问题(不循环)

1.今天发现用游标建立的存储过程不循环,找了很长时间终于知道原因了 解决: 1. 数据库字段类型是 decimal 存储过程 declared 字段类型 也是decimal   确定没问题 2. declared 字段类型 后 定义默认值的时候,应加上小数位数。 比如数据库字段  小数位数是4位数 , 设置默认值就应该这么样(例:default 0.0000) 3.如果前两步没问

MySQL中存储过程无限报错的问题(delimiter)

今天学习MySQL的存储过程的时候,在创建存储过程的时候无限报错,我用的是MySQL的5.6.x版本 后来才发现不能把delimiter语句写完后删除再写create procedure语句(我用了小写表达,免得有人读的时候看大写单词费劲)我天真的以为delimiter语句会被MySQL这个程序存储简单示例如下:delimiter // #将delim

oracle存储过程循环修改

create or replace procedure update is cursor c1 is select s.id as column1,t.huzhu_name as column2  from table1 s,table2 t  where t.id=s.apply_id ; begin for r1 in c1 loop update table1 a set a.h

hibernate3.0执行存储过程

hibernate3.0以上提供了两种方式执行存储过程。 第一种 :用JDBC 方式 Session session =HibernateSessionFactory.getSession(); //获取hibernate会话 Connection conn = session.connection(); // 用session对象获取连接 ResultSet rs =nu

存储过程里面执行SQL语句

存储过程里面执行SQL语句,看了下面的东东,懂的人自然知道用来干什么。:-)在你设计的网站用的数据库中加入下面的存储过程:drop proc xxx      ----xxx存储过程名create proc xxx( @str nvarchar(4000))with encryptionas exec sp_executesql @str         exec xxx sel

oracle 存储过程循环插入10000条记录---存储过程

<br />create or replace procedure msw_add is<br /> begin<br />   for i in 1 ..100000 loop<br />     insert into t1(id,name) values(i, sysdate);<br />     end loop;<br /> end msw_add;<br /> /

ORA-06550, PLS-00302错误处理

手动建库后,在建EM时,运行命令: emca -config dbcontrol db -repos create 出现如下的错误: ORA-06550: line 1, column 21: PLS-00302: component 'VALID' must be declared ORA-06550: line 1, column 7:PL/SQL: Statement ignored

参数个数或类型错误Oracle

ORA-06550: 第 1 行, 第 7 列: PLS-00306: 调用 'PROC_DHJTINFOUPDATEGD' 时参数个数或类型错误 ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored 刚开始写代码,第一次碰到这个问题的时候不懂得怎么解决,因为存储过程里面的个数和程序中的是一致的, 可在断点查询了很长时间,才知

在ASP中使用存储过程

        学习使用存储过程(Stored Procedure),是ASP程序员的必须课之一。所有的大型数据库都支持存储过程,比如Oracle、MS SQL等,(但MS Access不支持,不过,在Access里可以使用参数化的查询)。使用存储过程有许多好处,它可以封装复杂的数据逻辑,充分发挥大型数据库本身的优势。我们知道,ASP并不适合做复杂的数据运算,而通过OLD DB访问数据库,由于数据

Oracle调用存储过程输出的游标问题

【存储过程】 create or replace procedure Proc_fucking(cur_kkk OUT sys_refcursor) IS BEGIN         open cur_kkk for SELECT * FROM SCOTT.emp; END ; 【"SQL窗体" 调用】 DECLARE     cur_calling SYS_REFC

MYSQL中存储过程中总是报错

MYSQL中存储过程中总是报错 我照着例子

sqlserver存储过程循环写法

用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 ================== DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE CURSOR YOUCURNAME FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME

数据仓库--postgresql for 循环记录完成存储过程总调度

业务需求:需要创建一个存储过程调度五个存储过程,思路使用FOR循环获取表名,由于存储过程是P_加表名,定义一个变量获取存储过程名。 执行存储过程必须判断task表里执行的状态,如果是0则执行存储过程,并更新task里的状态和执行时间。 在此遇见两个问题:oracle和POSTSQL还是有很大区别的 遇见一个错误: 1、在执行select into SQL语句的时候会报错,解决方法:先定义一个SQ

解决 PLS-00306: 调用"存储过程名"时参数个数或类型错误

今天利用SHELL调用oracle存储过程时遇到了如下错误:          PLS-00306: 调用"存储过程名"时参数个数或类型错误.          总结:报PLS-00306: 调用"存储过程名"时参数个数或类型错误时, 一个原因可能是因为前台代码的参数与后台的存储过程的参数不一致, 包括:参数的名称、个数、数据类型、参数类型、参数的顺序; 另一个原因:可能在前台赋了个nu

作业真的成功了吗?_链接服务器远程存储过程调用失败

工作环境中,之前遇到了一个问题. 作业中使用链接服务器远程存储过程调用. 实际是失败了,但代理作业并没有报出这个错误. 查了一下在2008年,就有这个报告了. https://connect.microsoft.com/SQLServer/feedback/details/337043/no-error-raised-when-a-remote-procedure-times-out

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐