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;

他のキャメルケース変数をレコード変数に割り当てようとしていることに注意してください。これを検索してみましたが、何も表示されません。

基本的に、完全に参照されたものを返したい同じ列名の2つのテーブルが存在する可能性が非常に高くなりますTable1.ColumnNameTable2.ColumnName

それで:

1)RECORDが完全に参照されたSELECT値をどのように処理するかわからない2)キャメルケースの場合にそれらを返すことさえ可能ですか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

大文字と小文字を区別する識別子を返すことができます。ただし、2番目の部分(rec。"AclRoles"。"ObjectName"はナンセンスです)はrec。"ObjectName"である必要があります。

クエリを返すか、代わりにsql関数を使用する方が優れたソリューションです。

于 2012-05-11T13:52:42.557 に答える