簡體   English   中英

如何使用Perl和DBD :: ODBC從SQL Server查詢視圖?

[英]How do I query a view from SQL server with Perl and DBD::ODBC?

我可以查詢SQL Server數據庫很好。 當我嘗試查詢視圖時會發生問題。

我不是想做任何瘋狂的事情:

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

它一直死在准備線上。 這就是我要返回的內容(不是那么有用):

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

視圖是否應該與表完全一樣地處理? 提前致謝。

您是否嘗試過使用dbo。 視圖名稱的前綴(SELECT * FROM dbo.location_v)? 您是否檢查過視圖實際上在dbo中。 架構? 您是否檢查了視圖和/或從中選擇視圖的基表的權限? 遺憾的是,ODBC在這里沒有給出非常有意義的錯誤消息,因此它可能有很多東西,但是很可能找不到對象(由於前綴,或者您使用的數據庫錯誤)或權限。

是的,該查詢的視圖應該與表沒有區別。

您是否可以實際查詢視圖(而不是一般的數據庫)?

錯誤代碼-1不能強烈表示特定於問題的任何內容。 有時可以是“未經許可”,但幾乎可以是任何東西。

我建議通過使用在環境中設置的DBI_TRACE = 9(或可能是較小的數字)來查看問題出在哪里(或使用$dbh->trace(9) )。 這應該為您提供有關正在發生的事情的大量信息(並非所有信息都是可理解的)。 它可能會告訴您問題出在哪里。

精氨酸。 我發現了問題。 在查詢視圖之前,我進行了一些查詢,但在打開新視圖之前沒有關閉句柄。 我需要做的就是在運行查詢之前執行以下操作:

undef $stj;

希望這可以幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM