Suh*_*pta 1 oracle plsql procedure oracle11g
我创建了一个名为greet的过程:
create procedure greet(message in char(50))
as
begin
dbms_output.put_line('Greet Message : ' || message);
end;
Run Code Online (Sandbox Code Playgroud)
程序编译成功,但当我尝试将其称为:
execute greet('Hey ! This is a self created procedure :)');
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
execute greet('Hey ! This is a self created procedure :)')
Error report:
ORA-06550: line 1, column 7:
PLS-00905: object SUHAIL.GREET is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Run Code Online (Sandbox Code Playgroud)
它有什么错误?我为什么要这个?
注意:'suhail'是连接到oracle服务器的当前用户的名称
我不相信你的程序编译成功.当我尝试在我的系统上编译它时,我得到语法错误
SQL> create procedure greet(message in char(50))
2 as
3 begin
4 dbms_output.put_line('Greet Message : ' || message);
5 end;
6 /
Warning: Procedure created with compilation errors.
SQL> sho err
Errors for PROCEDURE GREET:
LINE/COL ERROR
-------- -----------------------------------------------------------------
1/32 PLS-00103: Encountered the symbol "(" when expecting one of the
following:
:= ) , default varying character large
The symbol ":=" was substituted for "(" to continue.
Run Code Online (Sandbox Code Playgroud)
如果我解决语法错误(您无法指定输入参数的长度),它可以工作
SQL> ed
Wrote file afiedt.buf
1 create or replace procedure greet(message in char)
2 as
3 begin
4 dbms_output.put_line('Greet Message : ' || message);
5* end;
SQL> /
Procedure created.
SQL> set serveroutput on;
SQL> execute greet('Hey ! This is a self created procedure :)');
Greet Message : Hey ! This is a self created procedure :)
PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)
如果您真的希望将输入参数声明为,我会感到震惊CHAR.几乎总是,您应该使用VARCHAR2字符串.在你真正想要空白填充语义的情况下遇到这种情况是非常罕见的CHAR.
| 归档时间: |
|
| 查看次数: |
10252 次 |
| 最近记录: |