日期:2014-05-17  浏览次数:21113 次

动态sql 查询问题
CREATE PROCEDURE [dbo].[ERP_Table_Search]
@SeleParam nvarchar(2000),
@FromParam nvarchar(2000),
@WherParam nvarchar(2000)
AS
declare @Query nvarchar(3000)
declare @Param nvarchar(3000)

set @Query='select '+@SeleParam+' from '+@FromParam+' '
if(@WherParam!='')
set @Query+=' where '+@WherParam+' '
set @Param='@SeleParam nvarchar(2000),@FromParam nvarchar(2000),@WherParam nvarchar(2000)'

exec sp_executesql @Query
print(@Query)
RETURN 0

上边是我写的通用查询存储,本来是写动态sql的,我对动态sql理解不是太深,是按示例做的,exec sp_executesql @Query后边本来是有传入参数的,被我删除了,因为写不写后边有传入参数都能运行。我想问现在这个还是动态sql吗?
下边是没改动之前的:
CREATE PROCEDURE [dbo].[ERP_Table_Search]
@SeleParam nvarchar(2000),
@FromParam nvarchar(2000),
@WherParam nvarchar(2000)
AS
declare @Query nvarchar(3000)
declare @Param nvarchar(3000)

set @Query='select @SeleParam=@SeleParam from @FromParam=@FromParam '
if(@WherParam!='')
set @Query=' where @WherParam '
set @Param='@SeleParam nvarchar(2000),@FromParam nvarchar(2000),@WherParam nvarchar(2000)'

exec sp_executesql @Query,@Param,@SeleParam=@SeleParam,@FromParam=@FromParam,@WherParam=@WherParam
print(@Query)
RETURN 0

------解决方案--------------------
当然是啦,你拼接的sql