2010-01-12 73 views
2

我在AS400中有IN和OUT參數的外部存儲過程(SP)。當我使用IN和OUT參數從webservice調用SP時,它向我顯示一個錯誤(Attempted to read or write protected memory)。但是,當webservice具有所有parm作爲IN模式並調用我的SP時,它可以正常工作。從ASP調用AS400的web服務

+0

這並不完全清楚你對問題的第二部分的含義。你確實在你的web服務中出錯。但是你也可以使用webservice而不會出錯。是: a)您使用另一套IN和OUT?如果是這樣,問題就解決了;-) b)你只使用IN參數? – robertnl 2010-01-13 18:40:41

回答

2

僅供參考,存儲過程在AS400上運行應該不重要。從您的ASP.NET webservice的角度來看,它使用的是常規的DB2數據庫。順便說一句,你如何從Web服務連接到數據庫,ADO.NET,ODBC或其他。

您是否嘗試過從AS400 SQL命令外殼(STRSQL)調用存儲過程?您是否嘗試從客戶端訪問導航器SQL腳本調用存儲過程?特別是如果最後一個工作,你的SP在技術上是正確的。請注意,您可以在CA Navigator中檢索SP的定義。研究你的IN和OUT參數非常好,因爲DB2對這些參數的類型不是很寬容。

請注意,您在as400(ILE或不ILE?)上的外部程序必須支持您爲存儲過程定義的參數類型。也許你的IN參數是正確的,但你的OUT參數不正確。因此,如果您的程序想要返回一個值,它可能會失敗。另外,您可以定義一組不同的參數(例如SQL而不是JAVA)。我可以想象,定義錯誤的設置會產生奇怪的效果。

現在,使用CA Navigator測試您的SP(每個AS400均有售)。如果可行,你的SP工作。然後你可以縮小你的問題到你的Web服務。

另外,在DB2中,您可以定義參數als INOUT。那也將是一個不錯的實驗。

+0

感謝@robertnl的幫助,我已經想通了。問題是SP調用AS400程序,並且從該程序發出返回參數。但是現在返回參數被緩存在SP中,並作爲SP的輸出參數傳遞給WS – neo 2010-01-18 13:40:07