一个简单的存储过程调用问题----分快完了,不要意思(100分)

  • 主题发起人 SevenOrient
  • 开始时间
S

SevenOrient

Unregistered / Unconfirmed
GUEST, unregistred user!
/*============存储过程:==============*/
CREATE PROCEDURE MATCH_NAMES_TO_MEDIA @DESCRIPTION CHAR(30),@NAME CHAR(40) OUTPUT
AS
SELECT ARTISTS.NAME FROM ARTISTS,MEDIA,RECORDINGS
WHERE MEDIA.DESCRIPTION=@DESCRIPTION AND
MEDIA.MEDIA_TYPE=RECORDINGS.MEDIA_TYPE AND
RECORDINGS.ARTIST_ID=ARTISTS.ARTIST_ID
GO
/*====================过程简介:============*/
1.输入参数是@DESCRIPTION
2。输出参数是@NAME
3。我在delphi里,用TStoredProc
4。存储过程返回好多记录,我想显示出这些记录
5。我代码如下:
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
self.StoredProc1.ParamByName('@DESCRIPTION').asString :='CD'; //提示错误信息:
//StoredProc1:No parameter type for parameter '@DESCRIPTION':????
self.StoredProc1.Open;
self.RichEdit1.Lines.Add(Storedproc1.parambyname('@NAME').AsString); //我想把显示的所有结果加到RichEdit里去。怎么办?
end;
 
首先:StoredProc1.Parameters.Refresh;
然后StoredProc1.Parameters.FindParam('@DESCRIPTION').Value := ???
或 ??? := StoredProc1.Parameters.FindParam('@NAME').Value
 
1、去掉 (CREATE PROCEDURE中的) OUTPUT
2、在StoredProc1.params中指定datatype类型
 
首先你要设定好StoredProc1了,第一个错误是你没有设定好引起的。
设定好后则改为:
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
self.StoredProc1.ParamByName('@DESCRIPTION').asString :='CD';
//StoredProc1:No parameter type for parameter '@DESCRIPTION':????
with self.StoredProc1 do
begin
Open;
first ;
while not eof do
begin
self.RichEdit1.Lines.Add(FieldByName('Name').AsString); //我想把显示的所有结果加到RichEdit里去。怎么办?
Next ;
end;
end ;
end;
 
StoredProc1.Parameters.Refresh是ADO的用法,bde改为storeproc1.refresh;
StoredProc1.Parameters.FindParam改为StoredProc1.parambyname().asstring
 
StoredProc1.StoredProcName:= 'MATCH_NAMES_TO_MEDIA';
storedProc1.ParamByName(@DESCRIPTION').ParamType := ptInput;
storedProc1.ParamByName('@DESCRIPTION').DataType := ftString;

storedProc1.ParamByName(@Name').ParamType := ptOutPut;
storedProc1.ParamByName('@Name').DataType := ftString;

StroedProc1.paramByName('@DESCRIPTION').asString := 'cd';

 
多人接受答案了。
 
顶部