小编str*_*ger的帖子

在 Oracle PL/SQL 中编写一个简单的 SELECT 存储过程

这是我的 SQL Server 存储过程,如下所示:

CREATE PROCEDURE passenger_details
AS
BEGIN
SELECT Full_Name, Age, Nationality, Category, Airline_Name, Class_Type
FROM Passenger, Ticket, Airline, Class
WHERE Passenger.Passenger_No=Ticket.Passenger_No AND Airline.Airline_No=Ticket.Airline_No AND Class.Class_No=Ticket.Class_No
END

EXECUTE passenger_details
Run Code Online (Sandbox Code Playgroud)

SQL Server 中的上述存储过程成功运行。

然后我尝试在 Oracle PL/SQL 中执行相同的存储过程,如下所示:

CREATE OR REPLACE PROCEDURE passenger_details
(p_passenger_details OUT SYS_REFCURSOR) 
AS 
BEGIN 
OPEN p_passenger_details FOR
SELECT Full_Name, Age, Nationality, Category, Airline_Name, Class_Type
FROM Passenger, Ticket, Airline, Class
WHERE Passenger.Passenger_No=Ticket.Passenger_No AND Airline.Airline_No=Ticket.Airline_No AND Class.Class_No=Ticket.Class_No;
END passenger_details;
Run Code Online (Sandbox Code Playgroud)

以上Oracle PL/SQL中的存储过程编译成功。

然后我尝试执行它,如下所示:

SET SERVEROUTPUT ON;
EXECUTE passenger_details;
Run Code Online (Sandbox Code Playgroud)

在尝试执行存储过程时,我收到以下错误消息,如下所示:

Error …
Run Code Online (Sandbox Code Playgroud)

stored-procedures plsql oracle-sql-developer

7
推荐指数
2
解决办法
8万
查看次数

如何在 Oracle PL/SQL 中使用输出参数执行存储过程?

这是我创建的表:

CREATE TABLE Toy
(Toy_No NUMBER PRIMARY KEY,
 Toy_Name VARCHAR(30) NOT NULL
 );
Run Code Online (Sandbox Code Playgroud)

这是我创建的序列:

CREATE SEQUENCE toy_seq
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 20;
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用输出参数创建一个简单的存储过程:

CREATE OR REPLACE PROCEDURE insert_toys(toy_id OUT NUMBER,toy_name VARCHAR(30))
AS
BEGIN 
toy_id := seq_toy.NEXTVAL;
INSERT INTO Toy (Toy_No,Toy_Name)
VALUES (toy_id,toy_name);
END;
Run Code Online (Sandbox Code Playgroud)

但我收到编译错误。错误可能在哪里?

oracle stored-procedures plsql

6
推荐指数
1
解决办法
7万
查看次数

异常逻辑在 Oracle PL/SQL 函数中不起作用

这些是我创建并插入了一些值的表:

CREATE TABLE DEPARTMENT
(DEPARTMENT_ID NUMBER PRIMARY KEY,
 DEPARTMENT_NAME VARCHAR(30) NOT NULL
 );

CREATE TABLE EMPLOYEES
(EMPLOYEE_ID NUMBER PRIMARY KEY,
 FIRST_NAME VARCHAR(20) NOT NULL,
 LAST_NAME VARCHAR(25) NOT NULL,
 EMAIL VARCHAR(25) NOT NULL,
 PHONE_NUMBER VARCHAR(20) NOT NULL,
 HIRE_DATE DATE NOT NULL,
 JOB_ID NUMBER NOT NULL,
 SALARY DECIMAL NOT NULL,
 DEPARTMENT_ID NUMBER NOT NULL,
 CONSTRAINT emp_job_fk FOREIGN KEY(JOB_ID) REFERENCES JOBS(JOB_ID),
 CONSTRAINT emp_department_fk FOREIGN KEY(DEPARTMENT_ID) REFERENCES DEPARTMENT(DEPARTMENT_ID)
 );

INSERT INTO DEPARTMENT (DEPARTMENT_ID,DEPARTMENT_NAME)
VALUES(1,'IT');
INSERT INTO DEPARTMENT (DEPARTMENT_ID,DEPARTMENT_NAME)
VALUES(2,'Sales');
INSERT INTO DEPARTMENT (DEPARTMENT_ID,DEPARTMENT_NAME)
VALUES(3,'Accounting'); …
Run Code Online (Sandbox Code Playgroud)

oracle plsql functions

2
推荐指数
1
解决办法
963
查看次数