簡體   English   中英

PL/SQL 記錄未存儲在數據庫中(未創建)

[英]PL/SQL Record not stored in Database (not created)

我有以下用於創建或定義類型為 Record 的過程:

create or replace procedure p_two
as
type sample_record is RECORD
(
name varchar2(32),
age number,
emp_id varchar2 (32)
);

begin
  commit;
  dbms_output.put_line('Hello from procedure');
end p_two;

我剛開始使用 PL/SQL 和 Oracle DB 並在 PL/SQL Developer 上嘗試所有這些,並在 SQL 窗口中使用以下代碼來執行該過程:

begin
   p_two;
   dbms_output.enable;
   dbms_output.put_line('Hello');
   commit;
end;

問題是代碼運行成功,我Hello from procedure輸出選項卡中的Hello from procedure中獲得輸出HelloHello from procedure但“sample_record”未存儲在數據庫中或未創建記錄。 它不顯示在 PL/SQL Developer 的types選項卡下。

我直接在 SQL 窗口中嘗試了以下操作:

  create or replace  type sample_record is RECORD
    (
    name varchar2(32),
    age number,
    emp_id varchar2 (32)
    );

它編譯出錯。 但是這次'sample_record'在types下可見,但它顯示錯誤並且不顯示任何屬性。 我讀了一些關於它並遇到一些帖子說

Record is not supported by SQL schema and it is only supported in PL/SQL

我認為這就是為什么即使它顯示在類型下也會出現錯誤的原因。

我的疑問是如何創建和存儲記錄類型,因為在 PL/SQL 塊中執行此操作顯然不會存儲它,並且 SQL 模式不直接支持它,因此編譯時會出錯。

我是這些技術的新手,因為我主要使用 MySQL,但需要盡快熟悉 PL/SQL 和 Oracle Db 以進行項目。 我試圖做的是創建一個查詢程序。 所以我基本上創建了一個對象sample_object並定義了一個sample_object類型的表sample_table但我無法直接在表中存儲值。 所以我想我必須創建一個記錄並使用它來填充從對象創建的表。 我仍然無法找到正確的方法,也找不到任何使用對象和記錄來定義表並填充它的帖子。 如果有人可以分享一篇文章或教程,那就太好了。

沒有架構級別RECORD 您可以使用OBJECT關鍵字而不是RECORD來創建TYPE

CREATE OR REPLACE  type sample_record IS OBJECT
 (
    name varchar2(32),
    age number,
    emp_id varchar2 (32)
);

您還可以使用可全局使用的包級別記錄。

CREATE OR REPLACE package pkg_objtest AS
TYPE sample_record IS RECORD (
    name varchar2(32),
    age number,
    emp_id varchar2 (32)
    );
END;
/


DECLARE
 srec pkg_objtest.sample_record;
BEGIN
   srec.name   := 'Mathews';
   srec.age    := 25;
   srec.emp_id := 'U203';
END;
/


Package PKG_OBJTEST compiled


PL/SQL procedure successfully completed.

暫無
暫無

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

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