【问题标题】:Oracle cursor variablesOracle 游标变量
【发布时间】:2014-10-01 15:52:22
【问题描述】:

我有需要在 SQL Server 中转换的 Oracle 代码,但需要帮助了解它到底在做什么。由于我一直避免使用游标,因此它们的使用方式对我来说仍然是个谜。请参阅下面的代码。这被放置在一个插入触发器中

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; 

【问题讨论】:

    标签: sql-server oracle triggers cursor


    【解决方案1】:
    • OPEN c1(table_name1) - 这将打开光标
    • FETCH c1 INTO variable - 这会将数据提取到 variable

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

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 2017-10-31
      相关资源
      最近更新 更多