我有一个存储过程,我从.sql文件运行,该文件接收来自用户的输入并运行该过程。该过程运行许多查询并在表中插入一行值。在.sql文件中,我想在运行查询后按特定列排序表。目前我有:
DECLARE
NAMEPARAM VARCHAR2(200);
VERSIONPARAM VARCHAR2(200);
STARTDATE DATE;
ENDDATE DATE;
BEGIN
NAMEPARAM := '&1';
VERSIONPARAM := '&2';
STARTDATE := '&3';
ENDDATE := '&4';
PROCEDURE(NAMEPARAM, VERSIONPARAM, STARTDATE, ENDDATE);
COMMIT;
Select * from TABLE_NAME
ORDER BY COLUMN_NAME ASC;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20101,SQLERRM);
END;
/
然而它会引发错误:
PLS-00428:此SELECT语句中需要一个INTO子句
我不知道为什么它需要一个into子句。帮助
编辑: 为了澄清我不希望看到排序表的输出,我希望表本身更新并按列按升序排序。
答案 0 :(得分:0)
如果在PL / SQL块中放入SELECT
语句,则需要对结果执行某些操作。如果您只想要一行,那么您需要SELECT INTO
一个局部变量。假设您期望多行,您可以编写一个迭代行的FOR
循环,或者可以BULK COLLECT
将行放入PL / SQL集合中。您也可以打开SYS_REFCURSOR
,但由于无法从匿名PL / SQL块返回,这似乎不太可能是您想要的。
我的猜测是你希望SELECT
语句在PL / SQL块之外,你想要使用任何工具来执行.sql脚本来运行PL / SQL块来填充表格和然后运行SELECT
语句,将结果写入您正在输出到的任何文件/控制台。