【问题标题】: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 而不是varcharstackoverflow.com/questions/1171196/… ...或者如果您想做一些真正“酷”的事情,请将wname varchar(20); 替换为wname s.ename%type; 以确保@ 987654329@ 将始终是您的列的任何类型。
  • 显示警告和错误,如下所述:stackoverflow.com/questions/17013487/…
  • 这是一个无聊的语法错误问题,OP 没有表现出要求提供更多信息的倾向。所以,投票结束。

标签: plsql


【解决方案1】:

您的表 S 上没有名为 EID 的列。

【讨论】:

    【解决方案2】:

    您可以使用以下命令。

    show errors procedure procedure_name;
    

    获取错误列表并检查。

    【讨论】:

      【解决方案3】:

      输入参数类型。 给出类似 创建或替换过程 p1(n IN s.eid%TYPE)

      的过程

      它会起作用的。

      【讨论】:

        【解决方案4】:

        我认为您的程序中有错字, 试试

        SET SETVEROUTPUT ON
        

        全部大写。

        【讨论】:

        • 它对我有用。即使我不关心案例,但当案例是资本时,它对我有用。这同样适用于创建触发器。(尝试、测试和成功)干杯
        猜你喜欢
        • 2019-11-08
        • 2014-03-16
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 2018-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多