【问题标题】:DB2: Details: 42S22:[IBM][CLI Driver][DB2] SQL0206N {colname} is not valid in the context where it is usedDB2:详细信息:42S22:[IBM][CLI Driver][DB2] SQL0206N {colname} 在使用它的上下文中无效
【发布时间】:2011-01-28 18:02:29
【问题描述】:

我有一个 DB2 SQL 查询,我需要通过 Database Expert 中的添加命令将它作为 Crystal Reports 文件的一部分。我的查询如下:

select "V_SIA_HIST_UTIL"."ID_HISTQ_UTILT_GIA"
        , "V_SIA_HIST_UTIL"."PRENM_UTILT_GIA"
        , "V_SIA_HIST_UTIL"."NM_UTILT_GIA"
        , "V_SIA_HIST_UTIL"."CD_UTILT_GIA"
        , "V_SIA_HIST_UTIL"."DH_DERNI_MODIF_UTILT_GIA"
        , "V_SIA_HIST_UTIL"."ID_HIST_UTILT_GIA_PAREN"
        , "pag"."nom_type"
        , "pag"."nom"
        , "pag"."description"
        , "pag"."nom_affiche"
        , "pag"."tri"
        , "pag"."id_utilisateur"
from "TEST"."V_SIA_HIST_UTIL"
    full outer join (
        select  "p"."nom_type"
                    , "p"."nom"
                    , "p"."description"
                    , "p"."nom_affiche"
                    , "p"."tri"
                    ,  "p"."id_utilisateur"
            from (
                select 'p' as "nom_type" 
                            , "V_SIA_HST_ROL_SECU"."NM_ROLE_SECUR_GIA" as "nom"
                            , CAST(NULL AS VARCHAR(128)) as "description"
                            , CAST(NULL AS VARCHAR(128)) as "nom_affiche"
                            , 0 as "tri"
                            , "V_SIA_JC_ROLS_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur"
                    from "TEST"."V_SIA_HST_ROL_SECU"
                       inner join "TEST"."V_SIA_JC_ROLS_UTIL" on "V_SIA_JC_ROLS_UTIL"."ID_HISTQ_ROLE_SECUR_GIA" = "V_SIA_HST_ROL_SECU"."ID_HISTQ_ROLE_SECUR_GIA"
                union
                select 'a' as "nom_type"
                            , "V_SIA_HST_ASG_RESS"."NM_ASSGN_RESRC_GIA" as "nom"
                            , "V_SIA_HST_ASG_RESS"."DESCN_ASSGN_RESRC_GIA" as "description"
                            , "V_SIA_HST_ASG_RESS"."NM_AFFIC_ASSGN_GIA" as "nom_affiche"
                            , 1 as "tri"
                            , "V_SIA_JC_ASSG_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur"
                    from "TEST"."V_SIA_HST_ASG_RESS"
                        inner join "TEST"."V_SIA_JC_ASSG_UTIL" on "V_SIA_JC_ASSG_UTIL"."ID_HIST_ASSGN_RESRC_GIA" = "V_SIA_HST_ASG_RESS"."ID_HIST_ASSGN_RESRC_GIA"
                union
                select 'g' as "nom_type"
                            , "V_SIA_HST_GRP_SECU"."NM_GROUP_SECUR_GIA" as "nom"
                            , CAST(NULL AS VARCHAR(128)) as "description"
                            , CAST(NULL AS VARCHAR(128)) as "nom_affiche"
                            , 2 as "tri"
                            , "V_SIA_JC_GRPS_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur"
                    from "TEST"."V_SIA_HST_GRP_SECU"
                        inner join "TEST"."V_SIA_JC_GRPS_UTIL" on  "V_SIA_JC_GRPS_UTIL"."ID_HISTQ_GROUP_SECUR_GIA" = "V_SIA_HST_GRP_SECU"."ID_HISTQ_GROUP_SECUR_GIA"
            ) "p"
    ) "pag" on "pag"."id_utilisateur" = "V_SIA_HIST_UTIL"."ID_HISTQ_UTILT_GIA"

当数据库专家尝试针对底层 DB2 数据中心验证查询时,我从 Crystal Reports 收到错误消息:

无法从数据库中检索数据。
详细信息:42S22:[IBM][CLI 驱动程序][DB2] SQL0206N
“V_SIA_HST_ROL_SECU.NM_ROLE_SECUR_GIA”在
中无效 使用它的上下文。 SQLSTATE=42703
[数据库供应商代码:-206]

我忘了提及这些建议的原因中的任何一个似乎都不适用于我的查询。
DB2 SQL-Error: -206 SQLState: 42703

同样的查询在 SQL Server 2005 上运行良好。

关于如何解决这个问题的任何线索?这是我第一次使用 DB2,我什至今天早上刚刚安装了 DB2 Data Center Client (DB2 Connect)!

提前感谢大家! =)

【问题讨论】:

    标签: sql db2


    【解决方案1】:

    证明两个平台上的查询是相同的。 'diff' 是你的朋友。

    如果它们相同,那么该列实际上是否在“TEST”表中。“V_SIA_HST_ROL_SECU”?如果不是,那将导致错误。

    查询在另一个平台(甚至只是在另一个数据库)上运行良好的事实可能只是意味着两个数据库之间存在一些不同。这里的错误表明它可能是结构上的差异。

    然后我会尝试删除该列和其他“nom”列。查看查询在没有错误消息中命名的列的情况下会做什么。这个想法是一次简化(缩短)查询,直到它起作用。 (或者从几乎什么都没有开始,一次一个地构建查询,直到它中断。)

    【讨论】:

    • 是的,确实如此。我刚刚验证,以便我可以确定它。感谢您的输入。 =)
    • 我编辑了我的答案,建议您证明这两个查询是相同的。当您比较两个平台时,这确实应该是您做的第一件事。
    • +1 用于演练解决方案。这种方法已被证明是有价值的不止一次!我只是不明白我自己是怎么想到的。 =\谢谢!我会试试这个。
    • 非常感谢!我在无法安装的 ODBC 驱动程序、安全问题等方面遇到了困难。然后,当我能够再次查询时,我重新开始查询,然后我成功了!谢谢!
    • @Will Marcouiller:数据库工作就像吃大象。你一次咬一口,你不会放弃。
    猜你喜欢
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多