Oracle游标变量

时间:2014-08-08 08:15:58

标签: sql-server oracle triggers cursor

我有这个Oracle代码,我需要在SQL Server中进行转换,但需要帮助了解它究竟在做什么。由于我一直避免使用游标,因此如何使用游标仍然是个谜。请看下面的代码。这被放置在插入触发器

CURSOR c1(table_name1 IN VARCHAR2)  
IS
    SELECT 
       a.begin, a.end, a.isnotactive, a.isactive, MIN(g.age) minage       
    FROM alltables a
    LEFT OUTER JOIN people g ON (g.ageid  = a.ageid)
       WHERE table_name = table_name1

    c1x_rec c1%ROWTYPE; 
    c1_rec c1%ROWTYPE; 

我特别不确定以下3行。到底是做什么的? table_name1从哪里获取其值?

WHERE table_name = table_name1

    c1x_rec c1%ROWTYPE; 
    c1y_rec c1%ROWTYPE; 

1 个答案:

答案 0 :(得分:1)

  • OPEN c1(table_name1) - 这将打开光标
  • FETCH c1 INTO variable - 这会将数据提取到variable

您需要创建必须与游标中的select语句匹配的变量才能获取数据。为此,您使用%ROWTYPE - 该属性提供表示行的记录类型。例如,您的变量c1x_rec, c1y_rec具有begin, end, isnoactive, isactive, minage个字段,每个字段在alltables或people表中声明为等效列类型。