2012-05-11 7 views
0

私はここで私の髪を引っ張っています。私は次のサンプルSPを持っています - 私はすでにレコードとしてRECを宣言していることに留意してください。CamelCaseカラムのSELECTに基づくPL/pgSQLレコード

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; 

注意他のラクダのケース変数をレコード変数に割り当てようとしています。私はこれを検索しようとしましたが、何も起きません。

1)私はどのようにRECORDハンドルがわからないよ:

基本的に、それは私が完全にTable1.ColumnName参照戻りたい、同じ列名を持つ2つのテーブル、およびSO Table2.ColumnName

を持っている可能性が非常に可能性があります完全に参照するSELECT値 2)彼らがすべてのヘルプをいただければ幸いです

キャメルケースのときにそれらを返すことも可能です。

+0

はなぜ '戻りtable'使用して、取扱全体のカーソルを削除しないのですか? –

+0

これはこのSPのほんの一部ですが、この点の前後に少しの作業があります。しかし、提案のおかげで、それは将来私を助けるかもしれません – Trent

答えて

0

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

RETURN QUERYのか、単にSQL関数が代わりにplpgsqlが、より良い解決策

+0

こんにちはパベル、あなたのお返事ありがとうございます。しかし、私が与えたのと同じカラムの例である2つのテーブルで何が起きるかは、カラム名だけで参照する必要がある場合にはあいまいではありませんか? – Trent

+0

PostgreSQLではあいまいな名前を使用できません。 –

関連する問題