各位老大:现有一难题,想写一个存储过程,传递tablename,fieldname,condition后查询相应表相应字段在相应查询条件下的最大值,但参数传递时总出错,高人给个示例吧!
解决方案 »
- 懂串口通信盆友帮个小忙了,谢!!!!!!!!
- 谁能告诉我四舍五入的函数???在线等!!!!!!!!!!!急
- alter table的问题
- 链接问题(在线等待)
- DateTimePicker1?????
- 我的d5下的程序用到system单元下的VarArrayCreate函数,在d7下不支持
- 请教各位 为什么使用QRCompositeReport 预览不能总在前 而总是在其它窗口的下面 如何解决!
- 我有一个报表.dll文件1M,请问如何减小一半,不压缩,有什么好方法?可否用写ini文件,急!!!!
- val函数怎么用啊!!
- 急!!!能否在程序里实现把DBGrid的内容保存为EXCEL格式吗,50分送上?
- 关于 在dll中读写注册表内容
- wwDBGrid控件中如何加按钮?
ADOStoredProc := TADOStoredProc.Create(nil);
ADOStoredProc.Connection := ADOConnection; ADOStoredProc.ProcedureName := '存储过程1';
ADOStoredProc.Parameters.CreateParameter('tablename', ftString, pdInput, 20,传入值);
ADOStoredProc.Parameters.CreateParameter('fieldname', ftString, pdInput, 20, 传入值);
ADOStoredProc.Parameters.CreateParameter('condition', ftString, pdInput, 20, 传入值); ADOStoredProc.Prepared := True;
ADOStoredProc.ExecProc;
finally
ADOStoredProc.Free;
end;
select @strmax=(select cast(@maxvalue as varchar(20)))
select @str='insert maxmintable values('+@strmax+','+'0'+')'
exec (@str)
如果是这样没有什么问题,但如果将datatable换成传递参数就不对了。比如如果卧要传递@tablename替换它,应如何处理呢?
@tablename varchar(20),@fieldname varchar(20),@condition char(8000)
as
exec('select max('+@fieldname+') as maxval from '+@tablename+' '+@condition)
go
sptest 'orders','orderid','where customerid=''vinet'''
declare sqlstr varchar(4000)
set sqlstr:='set @maxvalue==(select max(ua) from '+@tablename+')'
其他的一样