0

我在这里拉头发。我有以下示例 SP - 请记住,我已经将 rec 声明为 RECORD;

FOR rec IN
   SELECT
     "AclObjects"."ObjectName",
     "AclRoles"."RoleId"
   FROM
     "AclObjects",
     "AclRoles",
     "AclGrantRole"
   WHERE
     "AclObjects"."ObjectRef" = "AclGrantRole"."ObjectRef"
     AND "AclRoles"."RoleId" = "AclGrantRole"."RoleId"
     AND "AclObjects"."ObjectClass" = "inObjectClass"
     AND now() BETWEEN "AclGrantRole"."EffectiveFrom"
                   AND "AclGrantRole"."EffectiveTo"
 LOOP
    "outStatusCode" := 0;
    "outObjectName" := rec."AclRoles"."ObjectName";
    "outObjectName" := rec."AclRoles"."RoleId";
    "outStatusMsg" := NULL;

    return next;
  END LOOP;

请注意,我正在尝试将其他骆驼案例变量分配给记录变量。我试过搜索这个,但什么也没出现。

从本质上讲,我很可能有两个具有相同列名的表,我想返回完全引用Table1.ColumnName,并且Table2.ColumnName

所以:

1) 我不确定 RECORD 如何处理完全引用的 SELECT 值 2) 当它们是驼峰式时甚至可以返回它们

任何帮助将不胜感激。

4

1 回答 1

0

您可以返回区分大小写的标识符。但是第二部分-rec.“AclRoles”。“ObjectName”是胡说八道-应该是rec.“ObjectName”。

RETURN QUERY 或者只是 sql 函数而不是 plpgsql 是更好的解决方案

于 2012-05-11T13:52:42.557 回答