写了一个简单的oracle存储过程 实现表的字段更新

CREATE OR REPLACE PROCEDURE ADD_CUST_TYPE
IS
BEGIN
UPDATE CUS_CUST_INFO CI
SET CI.CUST_STYLE_VER = '大型核心客户'
WHERE
CI_CUST_SCALE_ID = '11' AND
FCC_CUST_CLASSIFIED_ID = '111';
UPDATE CUS_CUST_INFO CI
SET CI.CUST_STYLE_VER = '大型战略客户'
WHERE
CI_CUST_SCALE_ID = '11' AND
FCC_CUST_CLASSIFIED_ID = '112';
UPDATE CUS_CUST_INFO CI
SET CI.CUST_STYLE_VER = '大型基础客户'
WHERE
CI_CUST_SCALE_ID = '11' AND
FCC_CUST_CLASSIFIED_ID = '113';
UPDATE CUS_CUST_INFO CI
SET CI.CUST_STYLE_VER = '中型核心客户'
WHERE
CI_CUST_SCALE_ID = '12' AND
FCC_CUST_CLASSIFIED_ID = '111';
UPDATE CUS_CUST_INFO CI
SET CI.CUST_STYLE_VER = '中型战略客户'
WHERE
CI_CUST_SCALE_ID = '12' AND
FCC_CUST_CLASSIFIED_ID = '112';
COMMIT;
END ADD_CUST_TYPE;
在PLSQL写好后按F8执行 无异常
然后用EXEC ADD_CUST_TYPE;调用这个存储过程 提示“无效的SQL语句”
SELECT * FROM All_Objects a WHERE a.OBJECT_TYPE = 'PROCEDURE'查看 里面没有这个存储过程
应该是没提交上
请问哪里有错

第1个回答  2013-07-15
骚年,问题出在了你的update语句,哥表示无语。。。请睁大眼睛看:
'11' AND
第2个回答  2013-07-14

oracle里执行得这样

begin
 ADD_CUST_TYPE;
end;

本回答被提问者采纳

oracle中有一亿多行数据的表,要全表更新某字段值,有什么号的方法?
你可以写一个存储过程来执行,由于数据量大,如果直接更新,数据库UNDO表空间肯定会满,会产生异常。过程如下,给你参考下。CREATE OR REPLACE PROCEDURE UPDATE_TABLES AS TYPE T_MW IS TABLE OF ROWID;T_T_MW T_MW;CURSOR V_CUR IS SELECT ROWID FROM T ;BEGIN OPEN V_CUR;LOOP FETCH V_CUR...

oracle存储过程,我如何把两个表中的两列数据进行替换
这个一个语句就可以实现了,不用着存储过程。Update X set 列=(Select c from Y where b=a);要求Y表中不能有重复行。

oracle 存储过程循环执行update语句
如果仅仅是简单处理column1,比如加1什么的,就别搞那么复杂,一个sql就ok了。

写一个oracle数据库的存储过程,请表user扩展一个字段,类型varchar2(48...
begin execute immediate 'alter table user add new_columnname varchar2(48)';for rec in (select * from user)loop update user set new_columnname=(并用游标将表user_name中的name更新到扩展的字段种)where (id=???)end loop;end ;\/ 连接关系不太清楚,你试著修改下 ...

oracle 存储过程,写一个简单的Oracle存储过程
ORACLE提供的扩展SQL功能的编程语言,语法不难,和一般的开发语言差不多,关键是写好需要带着SQL调优的思想去写。

怎么样利用存储过程实现(oracle )的添加、删除、查询、修改啊?_百度知 ...
列个表,里边我一样给你写个例子,你看着学学,我尽量给你做出注释 --建一个学生表 create table student (id int,name varchar2(10));--插入两条测试数据 insert into student values (1,'张三');insert into student values (2,'李四');commit;---用存储过程添加id为3,姓名为王五的学生...

Oracle如何在将一个数据库中的所有表都加上某些字段。
需要用存储过程解决。如数据库中存在两张表,要给两张表都增加两个同样名称同样属性的字段,需要用以下代码:1、创建测试用表test和test1 create table test(id int,name varchar2(10));create table test1(id int,name varchar2(10));2、要为两个表同时增加id1和name1字段。使用代码:declare v...

oracle去一个字段的一部分值并更新给另一个字段的存储过程
一个sql语句就可以啊,为啥要存储过程?update user set 第一个字段=substr(第三个字段,8,8);commit;非要存储过程的话:create procedure p_update_userbeginupdate user set 第一个字段=substr(第三个字段,8,8) where length(第一个字段)<>15;commit;end;其中where条件的地方,看你到底想用什么...

Oracle存储过程,更新大量数据,如何循环分批次提交?
现要将begintime改成当前时间,每10条提交一次。可用如下存储过程:declare i int;--定义变量v_count int;--定义变量v_loop int;--定义变量begin select count(*) into v_count from test;--计算表内数据总数 select ceil(v_count\/10) into v_loop from dual;--计算需要循环次数 i:=1;--...

求一条简单的oracle查询存储过程
1、首先你的查询存储过程是有问题的 【user_telephone:='p_user_login_name'】改成 【user_telephone=p_user_login_name】,【aa varchar2】后面加一个【;】。再加一个打印语句即可:dbms_output.put_line(aa);[注意想看到打印结果必须 set serveroutput on]原因:【:=】是赋值符号。【p_user_...

相似回答