基于SELECT和CamelCase列的PL / pgSQL记录

时间:2012-05-11 10:12:06

标签: postgresql stored-procedures plpgsql

我把头发拉到这里。我有以下示例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.ColumnNameTable2.ColumnName

所以:

1)我不确定RECORD如何处理完全引用的SELECT值 2)当它们是骆驼的情况下甚至可以归还它们

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以返回区分大小写的标识符。但第二部分 - rec。" AclRoles"。" ObjectName"是无稽之谈 - 应该是rec。" ObjectName"。

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