“选择”的类型是什么?

时间:2016-04-08 09:23:32

标签: plsql

如果我有一个执行SELECT的函数,我该如何返回这个结果? select的结果类型是什么?

然后如何使用返回的结果并用它做事(让我们说循环并打印出来)?

3 个答案:

答案 0 :(得分:2)

也许你的意思是这样的。

DECLARE  
    /* Define the REF CURSOR type. */  
    TYPE curvar_type IS REF CURSOR RETURN table_name%ROWTYPE;  
    /* Reference it in the parameter list. */  
PROCEDURE open_query (curvar_out OUT curvar_type)  
IS  
    local_cur curvar_type;  
BEGIN  
    OPEN local_cur FOR SELECT * FROM table_name;  
    curvar_out := local_cur;  
END;

table_name%ROWTYPE可以是视图或显式游标名称。

答案 1 :(得分:1)

使用Oracle

(我有Oracle 10/11,可能在早期版本中更难?)

msbuild ProjectiOS.csproj /t:_RemoteBuild /p:ServerAddress=IP.ADD.RESS.HERE;BSAT=BSAT /p:Configuration=Ad-Hoc /p:Platform=iPhone TABLE。您必须使用%ROWTYPE收集它。

e.g。

BULK COLLECT INTO

答案 2 :(得分:-1)

假设您要从表中提取值并对其执行某些操作:

如果您只想查找一个特定记录,可以执行以下操作:

DECLARE
  l_variable1  table_name.column_name%TYPE;
  l_variable2  table_name.column_name%TYPE;

BEGIN
  SELECT column1, column2
    INTO l_variable1, l_variable2
    FROM table_name
   WHERE column_name_id = 138;
END;

这只有在返回一行时才有效,否则你会得到一个异常,说查询返回了多行。

如果您想要表格/视图中有多条记录,并且需要迭代,请使用游标。

DECLARE
   CURSOR C_cursor
   IS
        SELECT column1, column2, columnN
          FROM table_name
        --other clauses

   R_cursor_row   C_cursor%ROWTYPE;
BEGIN
   OPEN C_cursor;

   LOOP
      FETCH C_cursor 
       INTO R_cursor_row;
       EXIT WHEN C_cursor%NOTFOUND;

      --do what you need for each record
   END LOOP;

   CLOSE C_cursor;
END;