动态生成存储过程问题,急!请高手帮忙

pdbird pdbird 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大家知道一般的存储过程用以下方法就可以实现
with adoquery1 do
begin
close;
sql.clear;
sql.LoadFromFile('mysql.sql');
execsql;
end;

但如果存储过程的形式是:
CREATE PROCEDURE ZchtMoneyHand @jieZhiDate varchar(10),@ziJinHandLv decimal(18,6),@buTieDay int,
@pianqu varchar(100),@yunyingShang varchar(100),@productType varchar(100),@firstDayInYear varchar(10)
AS

declare @cndtnStr1 nvarchar(1000)
set @cndtnStr1=''

if (@yunyingShang<>'')
set @cndtnStr1=@cndtnStr1+' A.yunyingShang like ''%'+@yunyingShang+'%'' and '
if (@pianqu<>'')
set @cndtnStr1=@cndtnStr1+' A.pianqu like ''%'+@pianqu+'%'' and '
if (@productType<>'')
set @cndtnStr1=@cndtnStr1+' A.productType like ''%'+@productType+'%'' and '
if (@cndtnStr1<>'')
set @cndtnStr1=' and '+LEFT(@cndtnStr1,LEN(@cndtnStr1)-4)

declare @mainStr1 nvarchar(4000)
declare @mainStr2 nvarchar(4000)
declare @mainStr3 nvarchar(4000)

set @mainStr1='--省略---';
set @mainStr2='--省略---';
set @mainStr3='--省略---';

exec (@mainStr1+@mainStr2+@mainStr3+@cndtnStr1)

在delphi里运行的时候报错说参数未赋值(注:这个存储过程是完全正确的),而创建那种非动态字符串构造的存储过程就不会出错(因为其中不需要exec).请问你们有没遇到这种问题,如何解决?
以上两个例子不是我们存储过程,但我遇到了相同的问题。请高手帮忙。
我查了一天的网,没有在网上发现解决办法。

...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
pdbird
数据库相关 2,508 成员 88,437 内容