About Stored Procedure(28分)

  • 主题发起人 主题发起人 Victor.Sun
  • 开始时间 开始时间
sorry.
I paste the wrong version.
the origin sentence I write is:

qryCp.SQL.Text := qryCp.SQL.Text+'exec cp_pre_store'+frmPublicData.P_MSRC_CODE
+' '+edtClinic_No.Text+','+edtPresc_No.Text+','
+curM_No+','+edtQuantity.Text+',"'
+cbbxUnits.Text+'",'+Dosagestr+','
+Usagestr+','+FreqTypeStr+',1,@result=@rlt';
 
The Reference Guide write like this:
@parameters=@variable

That is to say. I use it correctly.
 
qryCp.SQL.Text := qryCp.SQL.Text+'exec cp_pre_store'+frmPublicData.P_MSRC_CODE
+'('+edtClinic_No.Text+','+edtPresc_No.Text+','
+curM_No+','+edtQuantity.Text+',"'
+cbbxUnits.Text+'",'+Dosagestr+','
+Usagestr+','+FreqTypeStr+',1,@result=@rlt output)';
======================这里改一下!
在sqlserver 6.5+delphi4+tquery上完全通过!
 
另外qryCp.SQL.Text := qryCp.SQL.Text+'exec...'改成
qryCp.SQL.add('exec...');
才好.
 
ID:132943是一样的.而且我常用
SQL.Add(...);
ID:132941关键在于

qryCp.SQL.Add(' select @rlt as RT');
qryCp.Open;
> rno := qryCp.FieldByname('RT').AsInteger;

在Line >中,Delphi报Can't find the field 'RT'
 
不好意思,Shangrila是我这另外一个同事的账户.刚用了它的机器.
ID:132949是我所说的.
 
呵呵,忘了一点,
qryCp.SQL.Add(' select @rlt as RT');
改成:
qryCp.SQL.Add(' select RT=@rlt');
 
Here, cytown
Delphi raise the exception: 'qryCp: Field 'RT' not found'
 
to cytown
ID:132952是你调试过的吗?
I have answered it with ID:132955 yet.
 
hehe, 不会出问题的.
 
Delphi Still raise the exception: 'qryCp: Field 'RT' not found'.
Why?
 
如果还报这错,就这样:
...
...Usagestr+','+FreqTypeStr+',1,@result=@rlt output)';
qryCp.sql.add('select @rlt');
qryCp.open;
rno := qryCp.Fields[0].AsInteger;

 
仔细看了看你的原码, 终于明白了:
query只返回第一个SELECT语句的内容, 所以, 实际返回的是:
select PRE_STORE from M_BATCH2001 holdlock where M_NO=@mno
这一句. 这样的话, 可以加上一个临时库, 保存返回值, 另外再做个查询得到
返回值. 用两个QUERY解决.
try
query1.execsql;
query2.active:=true;
showmessage(query2.fieldbyname('isok').asstring);
except
query1.close;
end;
 
是这样的:
你的存储过程写的有问题。你在I_SQL执行时,SQL肯定报了Message.
注意要将commit transaction移到While循环里去,该没问题了,Good Luck!
 
cyTown说对了!你应该都这么写!
if not exists(
select PRE_STORE from M_STORE2001 holdlock
where M_NO=@mno
and PRE_STORE>=@ecount)
begin
rollback tran
select @result=10
end
 
谢谢各位. // 作揖
分赃!

和<a href='http://www.gislab.ecnu.edu.cn/delphibbs/dispq.asp?LID=132829'>一起分赃</a>
顺便看看<a href='http://www.gislab.ecnu.edu.cn/delphibbs/dispq.asp?LID=128204'>这</a>
 
多人接受答案了。
 
后退
顶部