动态生成存储过程问题,急!请高手帮忙
大家知道一般的存储过程用以下方法就可以实现
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).请问你们有没遇到这种问题,如何解决?
以上两个例子不是我们存储过程,但我遇到了相同的问题。请高手帮忙。
我查了一天的网,没有在网上发现解决办法。
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).请问你们有没遇到这种问题,如何解决?
以上两个例子不是我们存储过程,但我遇到了相同的问题。请高手帮忙。
我查了一天的网,没有在网上发现解决办法。
...全文
相关推荐
急采购物品请购单DOC
这是一款整理发布的急采购物品请购单DOC,适用于学习、借鉴、参考急采购物品请购单DOC,欢迎大...该文档为急采购物品请购单DOC,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
一键自动化生成Word三线表的VBA脚本
三线表是一种在文档排版中常用的数据表格样式,它通过三条横线的特殊布局增强了表格的视觉效果和可读性。这种表格由表头、数据行和三根线组成:一条顶线、一条底线和位于数据行与表头之间的分隔线。表头和数据行之间清晰的分隔有助于读者快速区分不同数据类别。使用三线表的一个主要好处是它的简洁性。与传统的五线表相比,三线表减少了线条的使用,使得表格看起来更加清晰和干净。这种设计适用于需要展示少量数据和信息的文档,如报告、文章和演示文稿。
Java Spring动态生成Mysql存储过程详解
主要介绍了Java Spring动态生成Mysql存储过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
FaceTest[存储过程和JSON及Jquery]动态生成表格及分页
FaceTest[存储过程和JSON及Jquery]动态生成表格及分页
急采购物品请购单.doc
急采购物品请购单.doc


数据库相关
