ALTER PROCEDURE dbo.GetBasicDataQuery
@sqlstr char(255)AS
SET NOCOUNT ON
DECLARE @Str nVARCHAR(4000)
SET @Str='SELECT * FROM BasicInfo WHERE 1=1 -----####
('+@sqlstr+')
UNION ALL (SELECT * FROM disposebasicinfo WHERE 1=1 ----####
('+@sqlstr+')'
EXEC(@Str) ----####
RETURN
@sqlstr char(255)AS
SET NOCOUNT ON
DECLARE @Str nVARCHAR(4000)
SET @Str='SELECT * FROM BasicInfo WHERE 1=1 -----####
('+@sqlstr+')
UNION ALL (SELECT * FROM disposebasicinfo WHERE 1=1 ----####
('+@sqlstr+')'
EXEC(@Str) ----####
RETURN
ALTER PROCEDURE dbo.GetBasicDataQuery
@sqlstr char(255)AS
SET NOCOUNT ON
DECLARE @Str nVARCHAR(4000)
SET @Str='SELECT * FROM BasicInfo WHERE 1=1 and ('+@sqlstr+')
UNION ALL (SELECT * FROM disposebasicinfo WHERE 1=1 and ('+@sqlstr+')'
EXEC sp_ExecuteSql @Str
RETURN
go--或者:
ALTER PROCEDURE dbo.GetBasicDataQuery
@sqlstr char(255)AS
SET NOCOUNT ON
DECLARE @Str nVARCHAR(4000)
SET @Str='SELECT * FROM BasicInfo '
+case when @sqlstr>'' then 'WHERE ('+@sqlstr+') ' else '' end+'
UNION ALL (SELECT * FROM disposebasicinfo '
+case when @sqlstr>'' then 'WHERE ('+@sqlstr+') ' else '' end
EXEC sp_ExecuteSql @Str
RETURN
go
--如果传递的条件是类似这样: and bh=1 and id=1
ALTER PROCEDURE dbo.GetBasicDataQuery
@sqlstr char(255)AS
SET NOCOUNT ON
DECLARE @Str nVARCHAR(4000)
SET @Str='SELECT * FROM BasicInfo WHERE 1=1 ('+@sqlstr+')
UNION ALL (SELECT * FROM disposebasicinfo WHERE 1=1 ('+@sqlstr+')'
EXEC sp_ExecuteSql @Str
RETURN
go
@sqlstr NVARCHAR(255)
AS
BEGIN
SET NOCOUNT ON
DECLARE @Str NVARCHAR(4000)
SET @Str=N'SELECT * FROM BasicInfo WHERE ('+@sqlstr+N') UNION ALL (SELECT * FROM disposebasicinfo WHERE ('+@sqlstr+N')'
EXEC sp_ExecuteSql @Str
RETURN
END