我有这个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;
答案 0 :(得分:1)
OPEN c1(table_name1)
- 这将打开光标FETCH c1 INTO variable
- 这会将数据提取到variable
您需要创建必须与游标中的select语句匹配的变量才能获取数据。为此,您使用%ROWTYPE
- 该属性提供表示行的记录类型。例如,您的变量c1x_rec, c1y_rec
具有begin, end, isnoactive, isactive, minage
个字段,每个字段在alltables或people表中声明为等效列类型。