簡體   English   中英

Oracle Apex:成功但編譯錯誤

[英]Oracle Apex: Success With compilation error

我正在嘗試在 oracle 頂點中創建一個名為“Greetings”的過程。 程序問候運行時拋出一些錯誤,稱為“編譯錯誤成功”。 我下面的代碼有什么問題嗎?

代碼:

create table tb_Animals (
    txt_Name varchar(20) Primary Key,
    int_Weight number
);

insert into tb_Animals values ('Dog',30);
insert into tb_Animals values ('Cat',15);

CREATE OR REPLACE PROCEDURE greetings 
AS 
BEGIN 
   select * from tb_Animals;
END;

在 PL/SQL 中,您必須將這些值插入到某個東西中,通常是一個變量,但是,如果您要選擇整個表格內容,那么它必須是其他東西; 一個選項可能是一個參考。 例如:

SQL> CREATE OR REPLACE PROCEDURE greetings
  2  AS
  3    rc sys_refcursor;
  4  BEGIN
  5    open rc for
  6     select * from tb_Animals;
  7  END;
  8  /

Procedure created.

SQL>

編譯而言,它現在是正確的,但是 - 實際的“解決方案”取決於您真正想要做什么。

我在這里看到兩個問題:

  1. 您提供的代碼是 SQL 腳本,它將創建程序,而不是運行程序。 該錯誤告訴您該過程已創建,但它有一個錯誤。 創建命令完成后,您可以通過在 sqlplus 提示符下輸入“SHOW ERRORS”來查看確切的錯誤。
  2. 該過程本身的問題是您必須對您選擇的數據一些事情。 它需要被處理成變量,或者出於某種目的在 for/next 循環中使用。 簡單地選擇數據是行不通的——PL/SQL 是一種編程語言,而不是腳本語言。 請參閱此處獲取初學者指南: https://oracle-base.com/articles/misc/introduction-to-plsql 我無法提供比這更具體的指導,因為您沒有提供任何有關您的程序實際嘗試做什么的信息。

如果您只是希望您的腳本返回您剛剛插入表中的數據作為確認,只需運行 select 語句而不使用程序內容,就像這樣(並且不要忘記提交您的更改:):

create table tb_Animals (
    txt_Name varchar(20) Primary Key,
    int_Weight number
);

insert into tb_Animals values ('Dog',30);
insert into tb_Animals values ('Cat',15);
commit;

select * from tb_Animals;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM