2011-08-05 54 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バージョン= 8.0を試してください

1

私はそれが古い投稿だと知っていますが、それが誰かを助けると確信しています。

実行後にmssql_free_statement($stmt)を追加する必要があります。

+0

これは私が 'mssql_free_statement()'を呼び出して新しい文を作成する前に現在の文を閉じるときに働いてくれました。この振る舞いは私のために変わった。あるサーバでは、 'mssql_free_statement()'コールを使わずにコードを実行しました。もう一つは、 'mssql_free_statement()'を呼び出さなければ、それ以降のストアドプロシージャコールが失敗しました。 – leepowers

関連する問題