この投稿は ycliaojy によって最終編集されました: 2013-03-24 20:40:29
PHP がリンク サーバーを使用して mssql ストアド プロシージャを呼び出すときにエラーが発生します。同様の問題に遭遇した人はいますか?
//他のステートメントは省略します
$queryP= "exec OA_pfm_attend_group_toExempt @begin='$DATE1',@end='$DATE2'";
$cursor = msexequery($msconnection, $queryP);
//他のステートメントは省略します
// 結合された $queryP は次のとおりです: exec OA_pfm_attend_group_toExempt @begin='2013-03-01',@end='2013-03-24'
リンク サーバーを使用するすべてのステートメントを削除した後、クエリ アナライザーでストアド プロシージャの実行に問題はありません。PHP によって呼び出されるストアド プロシージャはリンク サーバーを使用できないというのは本当ですか。 ASPを書いて試してみましたが、問題ありませんか? [テスト後、ストアドプロシージャをasp上で実行すれば問題ありません]
PHP エラー メッセージには参照値がありません:
エラー #0:
SQL ステートメント: exec OA_pfm_attend_group_toExempt @begin='2013-03-01',@end='2013-03-24'
sqlserver イベント追跡およびログ情報には有用な情報が見つかりません。
ストアド プロシージャ コード:
<br>
ドロップ・プロシージャ OA_pfm_attend_group_toExempt<br>
行きます<br>
プロシージャ OA_pfm_attend_group_toExempt<br> を作成します
@begin日時、<br>
@終了日時<br>
<br>として
始まります<br>
nocount をオンに設定します<br>
ANSI_WARNINGS を <br> に設定します
ANSI_NULLS を <br> に設定します
--declare @begin datetime<br>
--declare @end datetime<br>
--set @begin = @beginSTR<br>
--set @end = @endSTR<br>
テーブル #query_Table_Temp を作成 (<br>
CheckDay 日時が null ではありません<br>
,checkIn datetime が null ではありません<br>
,checkOut datetime が null ではありません<br>
,isHoliday ビットは null ではありませんデフォルト 0<br>
)<br>
@checkDay 日時を宣言<br>
@checkIn datetime<br>を宣言します
@checkOut datetime<br>を宣言します
set @checkDay = @begin<br>
while (@checkDay<=@end) begin<br>
set @checkIn = Convert(varchar(10),@checkDay) ' 08:35:00'<br>
set @checkOut = Convert(varchar(10),@checkDay) ' 18:30:00'<br>
#query_Table_Temp (checkDay,checkIn,checkOut) 値 (@checkDay,@checkIn,@checkOut) に挿入<br>
--update #query_Table_Temp set isHoliday=1 where checkDay in (OPENQUERY(OAMySQL, 'SELECT * from a_rest_holiday'))から休日を選択します<br>
set @checkDay = dateadd(day,1,@checkDay)<br>
終了<br>
delete from #query_Table_Temp where checkDay in (select Holiday from OPENQUERY(OAMySQL, 'SELECT * from a_rest_holiday')) -- この文は、エラー <br> を発生させるリンク サーバーを呼び出すすべてのステートメントを削除します。
テーブル #attend_Temp(<br> を作成します
checkDay datetime が null ではありません<br>
,ユーザーID int<br>
,名前 varchar(30)<br>
,User_ID varchar(30)<br>
,dept_ID int<br>
,defチェックイン日時<br>
,defCheckOut 日時<br>
,checkIn日時null<br>
,checkOut datetime null<br>
、残りのビットは null ではありませんデフォルト 0<br>
,leave1 ビット null ではないデフォルト 0<br>
,leave2 ビット null ではないデフォルト 0<br>
,out1 ビット null ではないデフォルト 0<br>
,out2 ビット null ではないデフォルト 0<br>
、例外ビットが null ではないデフォルト 0<br>
)<br>
#attend_Temp (checkDay,userID,Name,User_ID,dept_ID,defCheckIn,defCheckOut) を挿入します<br>
#query_Table_Temp から a.checkDay、b.UserID、b.Name、b.oa_UserID、b.defaultDeptID、a.checkIn、a.checkOut を選択し、FileServiceDB.dbo.UserInfo に結合します。 b on 1=1 where b.Active=1 およびb.checkFree=0 <div class="clear"></div>