我正在尝试维护一个 PowerBuilder 程序,并且无法访问之前编写代码的程序员。我修改了一个 DataWindow,现在它生成的源代码在选择的列名中不包含表所有者 (dbo)。但它确实在 WHERE 子句中包含 dbo。见下文。
(旧的源代码在选择和位置的任何地方都显示 dbo.FieldAuxs。)
retrieve="PBSELECT( VERSION(400) TABLE(NAME=~"FieldAuxs~" )
COLUMN(NAME=~"FieldAuxs.id~")
COLUMN(NAME=~"FieldAuxs.clientid~")
COLUMN(NAME=~"FieldAuxs.status~")
COLUMN(NAME=~"FieldAuxs.historyear~")
WHERE( EXP1 =~"dbo.FieldAuxs.id~" OP =~"=~" EXP2 =~":al_id~" ) ) ARG(NAME = ~"al_id~" TYPE = number) " update="FieldAuxs" updatewhere=1 updatekeyinplace=no arguments=(("al_id", number)) )
这会导致错误:列前缀 dbo.FieldAuxs 与查询中使用的表名或别名不匹配...
我的数据库配置文件让我以我(而不是 dbo)的身份登录到 PowerBuilder 开发环境。我相信这就是我想做的。
我已阅读有关将我的 SQLCA.DBParm 设置为 SQLQualifiers=1 的信息,但我在 Database Profile Setup 中看不到 DBParms 输入区域。似乎在 12.5 之前的某些版本中,您可以直接在某个框中输入 DBParm 值。但是在 12.5 中,它们只有复选框和下拉菜单来设置 DBParm 的值。而且我没有看到可以转化为为 SQLQualifiers 设置值的选择。根据文档: SQLQualifiers=1 --在 SQL 语句中使用所有者名称限定标识符。
我必须没有正确设置我的 DataWindow 自动生成的源代码,该源代码仅在 WHERE 子句中而不是在选择中完全限定列名。
欢迎提出想法!