2009-11-26 33 views
0

我可以很好地查詢SQL服務器數據庫。當我嘗試查詢視圖時,問題就會發生。如何使用Perl和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) 

不應該處理視圖完全一樣的表嗎?提前致謝。

回答

3

您是否嘗試過使用dbo。視圖名稱上的前綴(SELECT * FROM dbo.location_v)?你有沒有檢查視圖實際上是在dbo中。架構?您是否檢查視圖和/或視圖從中選擇的基表的權限?可悲的是,ODBC並沒有給出一個非常有意義的錯誤信息,所以它可以是任何數量的東西,但它最有可能是找不到對象(由於前綴,或者你在錯誤的數據庫中)或權限。

1

是的,視圖應該與該查詢的表格無法區分。

你真的可以查詢視圖(而不僅僅是一般的數據庫)嗎?

-1的錯誤代碼並不強烈地表示任何具體的問題。它有時可能是'沒有許可',但它可能幾乎是任何東西。

我建議通過在環境中設置DBI_TRACE = 9(或使用更小的數字)來查看問題出在哪裏(或使用$dbh->trace(9))。這應該給你很多關於正在發生的事情的信息(並非全部都能理解);它可能會告訴你實際存在的問題。

0

Arg。我發現了這個問題。在查詢視圖之前,我有幾個查詢,並且在打開新視圖之前我沒有關閉手柄。我所需要做的是在我運行查詢之前做的是:

undef $stj; 

希望這可以幫助別人。