0

エラーが発生ORA-00933: SQL command not properly endedしました。LinqPadV4.42.14(AnyCPU)で次のlinqクエリを実行すると、データベースはOracle11gになります。

交換した場合

where coof.CoofCode == tod.PatTrnsplntFail.CoofCode && coof.OrgCode == prod.OrgCode

where coof.CoofCode == tod.PatTrnsplntFail.CoofCode

それは機能しますが、私はその要因を取り除くことはできません。

どんな体でも私を助けてくれます。

void Main()
{
    var q = (from pat in Pats
            from patr in pat.PatRegisters
            from prod in patr.PatRegisterOrgDets
            from tod in prod.TransplantOrgDets
            select new {
                PatId = pat.PatID,
                FullName = pat.FirstName + ", " + pat.LastName,
                RegisterDate = patr.RegDate.ToString("yyyy-MMM-dd"),
                TransplantDate = tod.Transplant.TransplantDate.ToString("yyyy-MMM-dd"),
                OrganSpec = tod.OrgSpec.Descrip,
                IsTransplantedFailed = tod.PatTrnsplntFail.TodID == 0 ? false: true,
                TransplantedFailReason = from coof in CausesOfOrgFail
                                         where coof.CoofCode == tod.PatTrnsplntFail.CoofCode && coof.OrgCode == prod.OrgCode
                                         select coof.Descrip
            }).Distinct().OrderBy(o => o.PatId);

    q.Dump(true);
}
4

1 に答える 1

0

この問題を回避する方法を見つけましたが、実際にはこれが良い方法だとは思いません。LinqPad Oracle ドライバーには内部バグがあり、その問題が発生する可能性があります。ジョセフ、これを読めるなら、あなたの提案をお願いします。したがって、代わりに次の linq クエリを使用します。

void Main()
{
    var q1 = (from pat in Pats
            from patr in pat.PatRegisters
            from prod in patr.PatRegisterOrgDets
            from tod in prod.TransplantOrgDets
            where tod.PatTrnsplntFail.TodID == null
            select new {
                PatId = pat.PatID,
                FullName = pat.FirstName + ", " + pat.LastName,
                RegisterDate = patr.RegDate.ToString("yyyy-MMM-dd"),
                TransplantDate = tod.Transplant.TransplantDate.ToString("yyyy-MMM-dd"),
                OrganSpec = tod.OrgSpec.Descrip,
                IsTransplantedFailed = false,
                CausesOfOrgFailReason = ""
            }).Distinct().OrderBy(o => o.PatId);

    var q2 = (from pat in Pats
            from patr in pat.PatRegisters
            from prod in patr.PatRegisterOrgDets
            from tod in prod.TransplantOrgDets
            from coof in CausesOfOrgFail where coof.CoofCode == tod.PatTrnsplntFail.CoofCode && coof.OrgCode == prod.OrgCode
            where tod.PatTrnsplntFail.TodID != null
            select new {
                PatId = pat.PatID,
                FullName = pat.FirstName + ", " + pat.LastName,
                RegisterDate = patr.RegDate.ToString("yyyy-MMM-dd"),
                TransplantDate = tod.Transplant.TransplantDate.ToString("yyyy-MMM-dd"),
                OrganSpec = tod.OrgSpec.Descrip,
                IsTransplantedFailed = true,
                CausesOfOrgFailReason = coof.Descrip
            }).Distinct().OrderBy(o => o.PatId);

    q1.ToList().Union(q2.ToList()).OrderBy(o => o.PatId).Dump(true);
}
于 2012-10-08T16:16:58.353 に答える