将select语句的结果插入到Oracle存储过程中的另一个表中

时间:2017-07-26 15:15:30

标签: oracle select stored-procedures plsql insert-into

我想使用以下存储过程将数据插入到包含有关表空间可用空间信息的表中。

仅使用INSERT INTO语句而没有程序编译工作正常,但是我编译程序时它没有工作。

以下是示例存储过程:

CREATE OR REPLACE PROCEDURE INSERTSPACEINFO(
       TABLESPACE_NAME IN SPACEINFO.TABLESPACE_NAME%TYPE,
       TSIZE IN SPACEINFO.TSIZE%TYPE,
       FREESIZE IN SPACEINFO.FREESIZE%TYPE,
       SYSDATE IN SPACEINFO.INSERT_DATE%TYPE)


IS
BEGIN  

INSERT into SYS.Spaceinfo (TABLESPACE_NAME, TSIZE, FREESIZE, INSERT_DATE)
(SELECT
  df.tablespace_name AS "Tablespace",
  df.bytes / (1024 * 1024 * 1024) AS "TSIZE",
  Trunc(fs.bytes / (1024 * 1024 * 1024)) AS "FREESIZE",
  SYSDATE
FROM (
  SELECT tablespace_name
    ,Sum(bytes) AS bytes
  FROM dba_free_space
  GROUP BY tablespace_name
  ) fs,
  (
    SELECT tablespace_name,
    SUM(bytes) AS bytes
    FROM dba_data_files
    GROUP BY tablespace_name
    ) df,
    dual

WHERE fs.tablespace_name = df.tablespace_name);

COMMIT;
END;

0 个答案:

没有答案