我试图将此代码存储在Oracle中,每次出现编译错误时。我搜索没有参数的存储过程,我没有找到解决方案来解决这个问题。 以下是我试图存储的程序:
CREATE OR REPLACE PROCEDURE Espacio_libre
BEGIN
select df.tablespace_name "Tablespace",
totalusedspace "MB Usados",
(df.totalspace - tu.totalusedspace) "MB Libres",
df.totalspace "MB Totales",
round(100 * ( (df.totalspace - tu.totalusedspace)/ df.totalspace))
"Pct Libre"
from
(select tablespace_name,
round(sum(bytes) / 1048576) TotalSpace
from dba_data_files
group by tablespace_name) df,
(select round(sum(bytes)/(1024*1024)) totalusedspace, tablespace_name
from dba_segments
group by tablespace_name) tu
where df.tablespace_name = tu.tablespace_name;
END Espacio_libre;
/
谢谢你们。
答案 0 :(得分:0)
在oracle中创建存储过程时,您使用的是PL / SQL代码而不是SQL。 pl / SQL中的表中没有选择列[column] 您必须从表格#39;中选择列到变量中。 请参阅下面的文档以了解PL / SQL编程的基础知识。 [https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/selectinto_statement.htm][1]
答案 1 :(得分:0)
create GLOBAL TEMPORARY table test22jan16 (tablespace_name varchar2(100),MB_Libres varchar2(100),MB_Totales varchar2(100),Pct_Libre varchar2(100))
ON COMMIT DELETE ROWS;
insert into test22jan16
select df.tablespace_name ,
(df.totalspace - tu.totalusedspace),
df.totalspace,
round(100 * ( (df.totalspace - tu.totalusedspace)/ df.totalspace))
from
(select tablespace_name,
round(sum(bytes) / 1048576) TotalSpace
from dba_data_files
group by tablespace_name) df,
(select round(sum(bytes)/(1024*1024)) totalusedspace, tablespace_name
from dba_segments
group by tablespace_name) tu
where df.tablespace_name = tu.tablespace_name;
创建一个全局临时表,该表存储数据,然后使用上述查询
将数据存储在此表中答案 2 :(得分:0)
创建一个视图,它将完成您对此过程的期望。
不能在没有INTO
子句和变量的PL / SQL块中使用select语句。
您还可以将Refcursor创建为OUT
参数