2016-08-15 118 views
-2
create or replace PROCEDURE Getstudentname(
    @firstname varchar(20), 
    @lastname varchar (20), 
    @e_mail varchar(20) 
) 
as 
begin 
    insert into TBL_STUDENTS(fanme, lname, email) 
    values(@firstname, @lastname, @e_mail); 
end; 

在此过程中可能出现什么错误?Oracle中的存储过程错误

程序GETSTUDENTNAME编译

错误:

check compiler log

这SQL查询也无法正常工作,并提供:

Error report - SQL Error: ORA-00936: missing expression 00936. 00000 - "missing expression" *Cause:
*Action:

+0

CREATE TABLE tbl_Students ( ID INT,fanme VARCHAR(20),L-NAME VARCHAR(20),电子邮件VARCHAR(20) ); – RAHUL

回答

1

试试这个

create or replace PROCEDURE Getstudentname(
firstname in varchar2, 
lastname in varchar2, 
e_mail in varchar2 
) 
as 
begin 
insert into TBL_STUDENTS(fanme,lname,email)values(firstname,lastname,e_mail); 
end; 
+0

http://www.codeproject.com/Articles/126898/Sql-Server-How-To-Write-a-Stored-Procedure-in-SQL – RAHUL

1

更正典型os并使用正确的语法:

CREATE TABLE tbl_Students 
(id int, Fname varchar(20), Lname varchar(20),Email varchar(20)); 


create or replace PROCEDURE Getstudentname(
    firstname in tbl_students.fname%TYPE, 
    lastname in tbl_students.lname%TYPE, 
    e_mail in tbl_students.email%TYPE 
) 
as 
begin 
    insert into TBL_STUDENTS (fname,lname,email) values (firstname,lastname,e_mail); 
end; 
/
2

对于参数,Oracle不使用@。我强烈建议你在它们前面添加一些内容,以便将它们与列名区分开来。是这样的:

create or replace PROCEDURE Getstudentname (
    in_firstname varchar2, 
    in_lastname varchar2, 
    in_e_mail varchar2 
) 
as 
begin 
    insert into tbl_students(fname, lname, email) 
     values(in_firstname, in_lastname, in_e_mail); 
end; 

此外,Oracle不需要用于字符串参数的长度,并且是varchar2标准可变字符串类型。你的代码看起来更像SQL Server代码而不是Oracle代码。