呼叫SQL-200預儲程序發生"結果=XXXXX"的錯誤? |
尚未結案
|
rich777
一般會員 發表:25 回覆:25 積分:10 註冊:2002-04-22 發送簡訊給我 |
請問各位先進高手們....
我是使用一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 發送簡訊給我 |
引言: 今當我回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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |