You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过.pf文件程序化连接数据库?switch case切换遇错误1402求助

关于Progress中使用Switch Case连接数据库时出现错误1402的解决方案

嘿,我来帮你解决这个头疼的问题!你遇到的错误1402提示“parameter -p is not a database parameter and was ignored”,但你的.pf文件里明明没写-p参数,这大概率是当前进程继承了额外的启动参数导致的——Progress的CONNECT语句默认会把当前会话的所有参数都传递给新连接,哪怕你的.pf文件里没包含这些参数。

下面是具体的排查和解决步骤:

先搞清楚-p参数的来源

  • 检查程序启动命令行:比如你是不是用类似pro myapp.p -p somevalue这样的命令启动的?哪怕你的.pf里没写,启动时的-p参数会被当前会话继承,CONNECT时就会跟着传到新连接里。
  • 检查.pf文件的间接引用:看看test.pf或Db.pf里有没有INCLUDE其他.pf文件?如果被引用的文件里有-p参数,也会被加载进来。
  • 用代码验证:在CONNECT之前加一行DISPLAY SESSION:PARAMETER('p').,看看输出的是什么值——如果有内容,说明当前会话确实带着-p参数。

解决方法:控制CONNECT的参数传递

最直接的方式是在CONNECT时使用NO-PARAMETERS选项,这样会忽略当前会话的所有参数,只使用你指定的.pf文件里的参数(或者显式写的参数)。

修改后的示例代码

CASE Db_Name:
    WHEN "Test":
        CONNECT TO 'test.pf' NO-PARAMETERS.
    END.
    OTHERWISE:
        CONNECT TO 'Db.pf' NO-PARAMETERS.
    END.
END CASE.

如果你不想完全忽略所有参数,只想清除-p,也可以显式指定需要的参数,比如:

CASE Db_Name:
    WHEN "Test":
        // 只传递-db参数,覆盖其他多余参数
        CONNECT TO (-db test) NO-PARAMETERS.
    END.
    OTHERWISE:
        CONNECT TO (-db production) NO-PARAMETERS.
    END.
END CASE.

验证修改效果

修改后运行代码,看看错误1402是否消失,再用DISPLAY SESSION:DB-NAME.确认连接的数据库是否符合预期。

内容的提问来源于stack exchange,提问作者Gaetano Herman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:37:49