2016-11-15 52 views
1

我有这个简单的SELECT过程:SELECT过程需要INSERT INTO?

create or replace PROCEDURE CST_FEEDBACK 
(
    LineID IN Integer 
) AS 
BEGIN 

SELECT 
    T1.* 
-- , Mgr.UserName as UserName 
FROM F_Feedback T1 
--LEFT JOIN tblUsers Mgr 
--ON T1.EmpID = Mgr.EmpID 

WHERE 
    T1.Line_ID = LineID 

ORDER BY T1.Comments_TS DESC; 

END CST_FEEDBACK; 

我是一个Oracle的n00b,我们在我们的商店使用SQL Server,但突然被迫改用甲骨文。

错误(7,1):PLS-00428:INTO子句在这个SELECT语句 预计

谁能告诉我,当我尝试编译它,我得到这个消息为什么会发生这种情况,以及是否有办法解决它?

+1

因为这是PL/SQL的语法。你打算如何处理选定的数据?你使用的是哪个版本的Oracle(数据库,而不是SQL Developer客户端)? –

+0

我只想带回数据,然后在ASP页面中填充一个中继控件(使用C#)。我想我可以在C#中运行代码,但我试图完全复制我们在使用SQL Server时所做的。我们正在使用Oracle 12c。 –

+0

我不知道如何从那里调用一个过程;如果你的SQL Server代码刚刚看到查询的结果,很可能你需要一个ref cursor out变量,或者一个返回ref cursor的函数。 [这里有一个12c特定的方法](http://stackoverflow.com/a/40360471/266304)。我认为,从我见过的评论来看,这应该与SQL Server中的工作方式接近。 –

回答

0

如果您在PL/SQL中调用select,那么您通常会使用过程中的结果来计算它。你有两种方法:

​​

如果你想选择一行。

或者你声明一个游标为select并循环它。

但我想,你想要一个存储过程,计算结果为表。

看来你想要做的事就像

SELECT * FROM MyProcedure(12345); 

所以你应该看看这里oracle procedure returning table of custom data type record