创建的过程有编译错误
① oracle数据库创建无参数存储过程,为什么总出现警告;创建的过程带有编译错误
直接错误是‘yourname’上的引号不对,应该用英文写法的单引号。
然后其他错误,emp表中,empno是主键,你把所有的empno都改成9010,执行时应该是会报错的。
另:update语句执行后需要commot;提交,否则不生效,还会锁表。
② oracle警告:创建的存储过程带有编译错误
set rnt:=1;
改为
rnt:=1;
再试一下。
③ 为什么oracle 新建存储过程时,出现“创建过程带有编译错误” ,求大神们帮助。因为没财富了,所以没悬赏了
先不说别的,就是insert into后必须要提交,否则插不进数据造成表被锁
再一个,你那俩参数ASSIGN_PK和CLASS_PK 是要输入的么?
输入的话要加上in,要不是输入,在后边取出的,至少也得赋值,这里就姑且当做你是要输入的两个参数吧。
create or replace procere add_t
(ASSIGN_PK IN VARCHAR2 ,
CLASS_PK IN VARCHAR2)
IS
BEGIN
INSERT INTO add_t values(''||ASSIGN_PK||'',''||CLASS_PK||'');
commit;
END;
④ oracle 创建简单存储过程出现编译错误
create procere axx_song
as
--测试
count_num number :=0; --声明一个变量接收我们的结果
begin
select count(*) into count_num from alert_qt;
dbms_output.put_line(count_num);--这个函数是输出信息到控制台.
end axx_song;
这个才是存储过程.区别于存储函数..函数必须有返回值.而存储过程可以没有,
⑤ 警告: 创建的过程带有编译错误。
1. 创建完存储过程(在命令行),可以用showerr看具体错误
2. 可以在PLsql中,输入"全班排名", 然后俺右键->编辑,看到具体错误
3. 你的sql从from后一直到group by的分号;是多余的,即便单独在SQL窗口也会报错
SQL应该改成
⑥ 创建存储过程报错如下: 警告: 创建的过程带有编译错误。
1. 创建完存储过程(在命令行),可以用showerr看具体错误
2. 可以在PLSQL中,输入"全班排名", 然后俺右键->编辑,看到具体错误
3. 你的sql从from后一直到group by的分号;是多余的,即便单独在SQL窗口也会报错
SQL应该改成
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
4. 存储过程不能直接用SQL,要用游标或select……into方式
比如:
create or replace procere 全班排名(
class in char(8)
)
as
cursor cur(p_class char(8)) is
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
rs cur%rowtype;
begin
for rs in cur(class) loop
dbms_output.put_line(rs.学号||','||rs.姓名||','||rs.平均分||','||rs.总分);
end loop;
end;
⑦ Oracle创建的过程带有编译错误
楼上是对的,还有这一句:INSERT
INTO
dept(deptno,dname,loc)
VALUES
(dno,dn,dl);
这个插入语句后面需要加上
commit;
提交你所做的插入数据的更改,不然数据表会被锁住的
⑧ oracle 警告创建的过程带有编译错误
1. 创建完存储过程(在命令行),可以用showerr看具体错误
2. 可以在PLSQL中,输入"全班排名", 然后俺右键->编辑,看到具体错误
3. 你的sql从from后一直到group by的分号;是多余的,即便单独在SQL窗口也会报错
SQL应该改成
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
4. 存储过程不能直接用SQL,要用游标或select……into方式
比如:
create or replace procere 全班排名(
class in char(8)
)
as
cursor cur(p_class char(8)) is
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
rs cur%rowtype;
begin
for rs in cur(class) loop
dbms_output.put_line(rs.学号||','||rs.姓名||','||rs.平均分||','||rs.总分);
end loop;
end;
⑨ oracle警告: 创建的过程带有编译错误。
CREATE OR REPLACE PROCEDURE GETSTATISTIC(COURSE_NAME CHAR) AS
LESS60 NUMBER;
A60 NUMBER;
A70 NUMBER;
A80 NUMBER;
A90 NUMBER;
CURRENT_CNO CHAR(4);
BEGIN
SELECT CNO INTO CURRENT_CNO FROM COURSE WHERE TRIM(CNAME) = COURSE_NAME;
SELECT COUNT(*)
INTO LESS60
FROM SC
WHERE CNO = CURRENT_CNO
AND GRADE < 60;
SELECT COUNT(*)
INTO A60
FROM SC
WHERE CNO = CURRENT_CNO
AND GRADE >= 60
AND GRADE < 70;
SELECT COUNT(*)
INTO A70
FROM SC
WHERE CNO = CURRENT_CNO
AND GRADE >= 70
AND GRADE < 80;
SELECT COUNT(*)
INTO A80
FROM SC
WHERE CNO = CURRENT_CNO
AND GRADE >= 80
AND GRADE < 90;
SELECT COUNT(*)
INTO A90
FROM SC
WHERE CNO = CURRENT_CNO
AND GRADE >= 90
AND GRADE < 100;
DELETE GRADELAYER;
INSERT INTO GRADELAYER VALUES ('[0,60)', LESS60);
INSERT INTO GRADELAYER VALUES ('[60,70)', A60);
INSERT INTO GRADELAYER VALUES ('[70,80)', A70);
INSERT INTO GRADELAYER VALUES ('[80,90)', A80);
INSERT INTO GRADELAYER VALUES ('[90,100]', A90);
EXCEPTION
WHEN NO_DATA_FOUND THEN
--RAISE_APPLICATION_ERROR(-20000, '输入错误,没有该课程!!!');
DBMS_OUTPUT.PUT_LINE('输入错误,没有该课程!!!');
RETURN;
END;
这个过程调整一下,没什么问题