我收到警告:创建的过程存在编译错误
Posted
技术标签:
【中文标题】我收到警告:创建的过程存在编译错误【英文标题】:Im getting an Warning: Procedure created with compilation errors 【发布时间】:2013-06-13 13:58:22 【问题描述】:我是pl/sql的初学者,正在学习。
这是我的桌子。
select * from s;
SLNO ENAME SAL
------ -------------------- ----------
1 Shiv 8000
2 Pankaj 9000
3 Prasath 10000
这是我的程序:
set serveroutput on
create or replace procedure p1(n number)
is wname varchar(20);
begin
select ename into wname from s where eid=n;
dbms_output.put_line('------');
dbms_output.put_line('employee name:='||wname);
dbms_output.put_line('------');
end;
我收到警告:
程序创建时出现编译错误。
如果我执行上述查询。任何人都可以请建议我要去哪里错了..
【问题讨论】:
它说编译错误是什么?如果您在创建过程后尝试执行该过程会发生什么? 在不知道编译错误细节的情况下很难帮你。一个(可能不相关的)问题:您应该使用varchar2
而不是varchar
:***.com/questions/1171196/… ...或者如果您想做一些真正“酷”的事情,请将wname varchar(20);
替换为wname s.ename%type;
以确保@ 987654329@ 将始终是您的列的任何类型。
显示警告和错误,如下所述:***.com/questions/17013487/…
这是一个无聊的语法错误问题,OP 没有表现出要求提供更多信息的倾向。所以,投票结束。
【参考方案1】:
您的表 S 上没有名为 EID 的列。
【讨论】:
【参考方案2】:您可以使用以下命令。
show errors procedure procedure_name;
获取错误列表并检查。
【讨论】:
【参考方案3】:输入参数类型。 给出类似 创建或替换过程 p1(n IN s.eid%TYPE)
的过程它会起作用的。
【讨论】:
【参考方案4】:我认为您的程序中有错字, 试试
SET SETVEROUTPUT ON
全部大写。
【讨论】:
它对我有用。即使我不关心案例,但当案例是资本时,它对我有用。这同样适用于创建触发器。(尝试、测试和成功)干杯以上是关于我收到警告:创建的过程存在编译错误的主要内容,如果未能解决你的问题,请参考以下文章