SQL部分:
表:
CREATE TABLE [T_Language] (
[fsCodify] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[fsName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
存储过程:
CREATE procedure Select_Language2
@ID varchar(300), ------输入编号
@Language varchar(300),------输入名称
@rows int output ----输出找到的行数asdeclare @sql varchar(300)set @sql=' select * from T_Language where 1=1'
if @ID!=''
set @sql=@sql + ' and fscodify=' + ''''+ @id+''''
if @Language!=''
set @sql=@sql + ' and fsname=' + ''''+ @Language+ ''''exec ( @Sql)
SELECT @rows = @@rowcount-----返回值
if @rows=0
return 0 -----找不记录
else
return 1-----找到记录
GO使用AdoQuerey控件测试OK
procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
close;
SQL.Clear;
sql.Add('execute select_Language2 ''1'',''英语'','''' ');//再问一下用Edit1.text 怎么代替代这个1,Edit2.text 怎么代替代这个英语的写法.
open;
end;
end;end.
但好像要用ADOStoredProc才可取得输出参数和返回值
ADOStoredProc控件不太会用,请大家指教一下
表:
CREATE TABLE [T_Language] (
[fsCodify] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[fsName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
存储过程:
CREATE procedure Select_Language2
@ID varchar(300), ------输入编号
@Language varchar(300),------输入名称
@rows int output ----输出找到的行数asdeclare @sql varchar(300)set @sql=' select * from T_Language where 1=1'
if @ID!=''
set @sql=@sql + ' and fscodify=' + ''''+ @id+''''
if @Language!=''
set @sql=@sql + ' and fsname=' + ''''+ @Language+ ''''exec ( @Sql)
SELECT @rows = @@rowcount-----返回值
if @rows=0
return 0 -----找不记录
else
return 1-----找到记录
GO使用AdoQuerey控件测试OK
procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
close;
SQL.Clear;
sql.Add('execute select_Language2 ''1'',''英语'','''' ');//再问一下用Edit1.text 怎么代替代这个1,Edit2.text 怎么代替代这个英语的写法.
open;
end;
end;end.
但好像要用ADOStoredProc才可取得输出参数和返回值
ADOStoredProc控件不太会用,请大家指教一下
解决方案 »
- delphi 读取注册表问题
- 将dbgrid某字段值赋给treeview做子结点 请教~~~
- 如何清楚快速清除数组中的所有内容?
- 本人初学,想找对sqlserver表格增删改的程序,哪儿有?
- 求职作delphi程序员!附上简历+100分,希望大家给点意见!
- 得已肝三年了,也许在临死前我能做一个全国最优秀的动态构造系统.
- 请教一个问题?????????
- 關於存摺打印的實現
- 如何实现在wwdbgrid得列头加上一个combobox,可以过滤相应得记录
- how to copytoclipboard????
- 100分求一張<<DELPHI高手突破>>光盤,先謝過!
- 如何解决大数据查询时导致狂占内存的问题?
sql.Add('execute select_Language2 '''+ edit1.Text + ''',''' + edit2.text+ ''','''' ');顶一下
DataSet在得到返回数据后,就跟直接查询 FieldByName没有什么两样
你是说用ADODataset控件吗?
能否说具体点
begin
with AdoDataSet1 do //
begin
ParamCheck := False;
CommandType := cmdStoredProc;
CommandText := 'Select_Language2' ;
ParamCheck := True; Parameters.ParamByName('@ID').Value :='1';
Parameters.ParamByName('@Language').Value :='1';
Parameters.ParamByName('@rows').Value :='1';
Open;
ShowMessage(Parameters.ParamByName('@RETURN_VALUE').Value);
end;
end;
按照你的程序执行提示:project project1.exe rasied class EDatabaseError With Msessage "ADODataset1":Parameter '@id' not found
你在设计期内把AdoDataSet的CommandType设置为cmdStoredProc
然后选择 CommandText 为你的 Select_Language2
ParamCheck 设置为True然后 点击 Parameters属性,看看每一个参数名字和Value是否和你存储过程内的一致。包括类型。可以为参数赋上默认的Value
Active ADODataSet看看会不会出错。
你这个错误应该是参数设置错误,包括名字,类型,值,你仔细检查一下。