2010-11-24 58 views
1

嘿家伙,我有一个存储过程,只输出表的列。相反,我想'有''专栏''的学生。'作为输出。下面的例子。存储过程输出字符串和光标

CREATE OR REPLACE PROCEDURE active_students (arc in out sys_refcursor) 
     as 
     begin 
      open arc for select count(*) from student; 
     end; 

这产生

Count(*) 
30 

想它来阅读

There are 30 students. 

回答

2

用途:

CREATE OR REPLACE PROCEDURE JSU4290M.active_students (arc in out sys_refcursor) 
AS 
BEGIN 

    OPEN arc FOR 
    SELECT 'There are '|| COUNT(*) ||' students.' AS col 
    FROM STUDENT; 

END; 

双管(||)是Oracle(现在ANSI标准)连接字符串的方式。 Oracle会将整数值隐式转换为一个字符串。

+0

@DatabaseDummy:“隐藏”是什么意思?您应该使用列名作为参考,而不是结果集中的位置,因为位置可能会改变。列名也可以改变,但它不那么脆弱。 – 2010-11-24 04:17:00