2011-08-05 85 views
4

我目前使用以下查詢連接到坐在Windows 2008上的SQL數據庫成功;mssql_execute失敗,「存儲過程執行失敗」

$result = mssql_query("EXEC dbo.stored_procedure_name @param_level = 2"); 

我基於我現有的代碼寫在VB/ADO看起來像;

If level = "" Then level = 1 

cmdTT.ActiveConnection = connStrTest1 

set objParam=cmdTT.CreateParameter("@param_level", adInteger, adParamInput, 4, level) 
cmdTT.Parameters.Append objParam 

set rsTT = cmdTT.Execute 

所以我嘗試的是以下;

$f = 2; 

$stmt = mssql_init('dbo.stored_procedure_name', $mssql_link); 

mssql_bind($stmt, "@param_level", $f, SQLINT4, false); 

mssql_execute($stmt); 

但無論怎樣變化似乎總是打印打印屏幕上的警告,「警告:mssql_execute()[function.mssql-執行]:存儲過程執行失敗...」 。

對於我在這裏調試問題的最佳方式是什麼?任何人都可以看到明確的解決我的問題?

我目前正在從LAMP堆棧遠程連接到數據庫。

非常感謝 伊恩

回答

1

運行存儲過程從瓦特/與硬編碼參數SQL編輯器,你會得到更詳細的錯誤信息這樣的內容。

+1

查詢使用top方法運行良好,但是當我使用mssql_execute函數模仿時,它會崩潰。我認爲它摔倒在mssql_bind的東西上,但不知道爲什麼。 – ismithuk

3

這是來自使用FreeTDS的Linux服務器嗎?如果是這樣,我想知道這是否與TDS版本有關。在你的/etc/freetds.conf中試試tds version = 8.0

1

我知道這是一箇舊帖子,但肯定會幫助某人。

執行後必須添加mssql_free_statement($stmt)

+0

當我調用'mssql_free_statement()'在創建新語句之前關閉當前語句時,這對我有用。這種行爲因我而異。在一臺服務器上,代碼運行良好*沒有* mssql_free_statement()調用。另一個未能調用'mssql_free_statement()'導致每個後續的存儲過程調用失敗。 – leepowers