【问题标题】:How do I query a view from SQL server with Perl and DBD::ODBC?如何使用 Perl 和 DBD::ODBC 从 SQL 服务器查询视图?
【发布时间】:2009-11-26 20:19:31
【问题描述】:

我可以很好地查询 SQL 服务器数据库。当我尝试查询视图时会出现问题。

我不想做任何疯狂的事:

 $sql = 'select * from location_v';
 $stj = $db_destination->prepare($sql);

它一直在准备线上死去。这是我要返回的内容(并不是很有用):

DBD::ODBC::db prepare failed: (DBD: st_prepare/SQLPrepare err=-1)

视图不应该与表格完全相同吗?提前致谢。

【问题讨论】:

    标签: sql-server perl dbi


    【解决方案1】:

    您是否尝试过使用 dbo.视图名称的前缀 (SELECT * FROM dbo.location_v)?您是否检查过视图实际上在 dbo 中。架构?您是否检查了视图和/或视图从中选择的基表的权限?遗憾的是 ODBC 在这里没有给出非常有意义的错误消息,所以它可能是任意数量的东西,但很可能是找不到对象(因为前缀,或者您在错误的数据库中)或权限。

    【讨论】:

      【解决方案2】:

      是的,视图应该与该查询的表没有区别。

      你真的可以查询视图(而不仅仅是一般的数据库)吗?

      错误代码 -1 并不强烈表明任何特定的问题。有时可能是“未经许可”,但几乎可以是任何东西。

      我建议通过使用环境中设置的 DBI_TRACE=9(或者可能更小的数字)(或使用$dbh->trace(9))来查看问题出在哪里。这应该为您提供有关正在发生的事情的大量信息(并非所有信息都可以理解);它可能会告诉你问题到底出在哪里。

      【讨论】:

        【解决方案3】:

        精氨酸。我发现了问题。在查询视图之前,我有一些查询,并且在打开新视图之前我没有关闭我的句柄。在我运行查询之前,我需要做的就是:

        undef $stj;
        

        希望这对其他人有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-06
          • 1970-01-01
          • 2020-02-12
          • 1970-01-01
          • 2011-01-14
          • 2014-10-14
          相关资源
          最近更新 更多