全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1206
推到 Plurk!
推到 Facebook!

呼叫SQL-200預儲程序發生"結果=XXXXX"的錯誤?

尚未結案
rich777
一般會員


發表:25
回覆:25
積分:10
註冊:2002-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-23 11:25:37 IP:61.59.xxx.xxx 未訂閱
請問各位先進高手們.... 我是使用一Query Analyzer在sql server 上設計了一個自定預儲程序StockIntoTran 而且在該環境中測試過,的確是我想要的結果,程式碼如下: Create Procedure StockIntoTran @StNo varchar(8) AS BEGIN TRAN StockInto update ST set ST.Qty=ST.Qty STIN.QTY from (select STINB.Qty from STINB left join ST on ST.Batch=STINB.Batch where STINB.St_No=@StNo and STINB.MAT_NO=ST.MAT_NO and STINB.DESP=ST.DESP and STINB.UNIT=.ST.UNIT) STIN insert into ST(LOCATION, MAT_NO, DESP,UNIT,BATCH,QTY) select STINB.LOCATION, STINB.MAT_NO, STINB.DESP, STINB.UNIT, STINB.BATCH, STINB.Qty from STINB left join ST on ST.Batch=STINB.Batch where St_No=@StNo and ST.Batch IS NULL update [Basic].[dbo].[Material] set [Basic].[dbo].[Material].NowQty=NowQty STINB.Qty from STINB where STINB.St_No=@StNo and [Basic].[dbo].[Material].Mat_No=STINB.Mat_No 今當我回DELPHI放置TStoredProc元件欲使用時, 第一次RUN出現"參數@StNo沒有參數型態" 於是我到TStoredProc.Params觀看... 發現裡面有二個參數:@StNo,結果(奇怪怎麼會有參數用中文的?) 原本參數@StNo:的Parametet Type原本是空白的,我將其設定為"輸入" 而參數結果其Parametet Type的預設值就是結果,所以就沒異動任何預設值 但再RUN時卻出現"找不到預儲程序結果=dbo.StockInToTran;1"的錯誤訊息? 奇怪如果上述錯誤訊息的"結果"是指參數的話? 那它是自動產生的,而且還是中文的?DELPHI會認得嗎? 我確定TStoredProc連接的TDatabase的設定沒錯, 因為我使用TTable連接同一TDatabase是可以open的 呼叫的程式碼: with StoredProc1 do begin Params.ParamByName('@StNo').AsString := '0010031'; Prepare; ExecProc; end; 由於小弟第一次使用預儲程序不知是那出了差錯, 煩請各位先進高手們解惑,感激不盡~~~ PS.開發環境NT4 SQL2000 win98se Delphi3 DBE5.11
jerryhung
初階會員


發表:6
回覆:46
積分:30
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-23 13:07:58 IP:202.39.xxx.xxx 未訂閱
引言: 今當我回DELPHI放置TStoredProc元件欲使用時, 第一次RUN出現"參數@StNo沒有參數型態" 於是我到TStoredProc.Params觀看... 發現裡面有二個參數:@StNo,結果(奇怪怎麼會有參數用中文的?) 原本參數@StNo:的Parametet Type原本是空白的,我將其設定為"輸入" 而參數結果其Parametet Type的預設值就是結果,所以就沒異動任何預設值 但再RUN時卻出現"找不到預儲程序結果=dbo.StockInToTran;1"的錯誤訊息? 奇怪如果上述錯誤訊息的"結果"是指參數的話? 那它是自動產生的,而且還是中文的?DELPHI會認得嗎? 理論上應該是英文的啊,像我的TStoredProc就有兩個變數 0 Result <- DataType = ftInteger, ParamType = ptResult 1 @mode <- DataType = ftInteger, ParamType = ptInput (你可能沒設定DataType) 還有,應該不用後面的 ;1,直接用名稱即可,我的例子便為 dbo.CAC_Management 我確定TStoredProc連接的TDatabase的設定沒錯, 因為我使用TTable連接同一TDatabase是可以open的 呼叫的程式碼: with StoredProc1 do begin Params.ParamByName('@StNo').AsString := '0010031'; Prepare; ExecProc; end; 我的例子.... ParamBindMode = pbByNumber <- ParamByName好像會有問題說 try with spManagement do begin Params[1].value := mode; Prepare; ExecProc; UnPrepare; end; finally ShowMessage('動作完成'); end; PS.開發環境 Delphi5 Windows 2000 Server SQL 2000 希望能幫上你忙囉!然後看我能不能多一個答題得分,哈哈
rich777
一般會員


發表:25
回覆:25
積分:10
註冊:2002-04-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-04 08:32:14 IP:61.59.xxx.xxx 未訂閱
感謝jerryhung的熱心回覆.... 後來我重裝Delphi3不加裝中文套件就好了... 真是怪怪... 主要是下列的參數值: 於是我到TStoredProc.Params觀看... 發現裡面有二個參數:@StNo,結果(奇怪怎麼會有參數用中文的?) 結果不再出現中文的而是英文的~~~
系統時間:2024-06-26 23:05:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!