MSSQL数据库 :如何给 存储过程中的 IN() 传递参数,谁能够帮忙修改一些。
CREATEPROCEDURE[dbo].[Stat_MultiplesLoadByUnionAll](@Cellsnvarchar(255))ASBEGINdeclar...
CREATE PROCEDURE [dbo].[Stat_MultiplesLoadByUnionAll]
(
@Cells nvarchar(255)
)
AS
BEGIN
declare @UnionTable varchar(8000)
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ') +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and name in ('View_16','View_17')
--print @UnionTable
exec(@UnionTable)
END
---------------------------------
--帮忙修改 该存储过程:
--实现上述存储过程中的 in() 中的 数据“'View_16','View_17'” 作为参数传递到存储过程。
--注意:in() 中的项不固定大小 展开
(
@Cells nvarchar(255)
)
AS
BEGIN
declare @UnionTable varchar(8000)
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ') +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and name in ('View_16','View_17')
--print @UnionTable
exec(@UnionTable)
END
---------------------------------
--帮忙修改 该存储过程:
--实现上述存储过程中的 in() 中的 数据“'View_16','View_17'” 作为参数传递到存储过程。
--注意:in() 中的项不固定大小 展开
3个回答
展开全部
中的项不固定大小,应该选一个足够大的值,varchar(1000)
CREATE PROCEDURE [dbo].[Stat_MultiplesLoadByUnionAll]
( @Cells nvarchar(255),@name1 varchar(1000) )
as
begin
if (@name1 <>'' or @name1 is not null)
begin
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ) +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and name in (' + @name1 =')'
end
end
--注意@name1 传入的格式 是'tab1','tab2','tab3'................ 这样的,才能拼对
CREATE PROCEDURE [dbo].[Stat_MultiplesLoadByUnionAll]
( @Cells nvarchar(255),@name1 varchar(1000) )
as
begin
if (@name1 <>'' or @name1 is not null)
begin
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ) +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and name in (' + @name1 =')'
end
end
--注意@name1 传入的格式 是'tab1','tab2','tab3'................ 这样的,才能拼对
佳达源
2024-10-28 广告
2024-10-28 广告
AR0144CSSM20SUKA0-CPBR这款产品,作为我司产品线中的重要一员,集成了高精度的传感器技术与先进的图像处理算法,广泛应用于安防监控、工业自动化及机器视觉等领域。其卓越的性能与稳定性,确保了在各种复杂环境下的精准数据采集与高效...
点击进入详情页
本回答由佳达源提供
展开全部
CREATE PROCEDURE [dbo].[Stat_MultiplesLoadByUnionAll]
(
@Cells nvarchar(255),
@View_16 varchar(200),
@View_16 varchar(200)
)
AS
BEGIN
declare @UnionTable varchar(8000)
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ') +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and name in ('''View_16''','''View_17''')
--print @UnionTable
exec(@UnionTable)
END
(
@Cells nvarchar(255),
@View_16 varchar(200),
@View_16 varchar(200)
)
AS
BEGIN
declare @UnionTable varchar(8000)
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ') +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and name in ('''View_16''','''View_17''')
--print @UnionTable
exec(@UnionTable)
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--假设@param为传入参数,用逗号分隔,如 “View_16,View_17”
--1.考虑通过like来匹配,为了准确性,需要在两端增加逗号
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ') +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and ','+@param+',' like '%,'+name+'%,'
--即:',View_16,View_17,' like '%,'+name+'%,'
--2 也可以用charindex函数
charindex( ','+name+',' ,','+@param+',' )>0
charindex( ','+name+',' ,',View_16,View_17,')>0
--1.考虑通过like来匹配,为了准确性,需要在两端增加逗号
select @UnionTable=isnull(@UnionTable+' union all select '+@Cells+' from ',' select '+@Cells+' from ') +quotename(Name) from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and ','+@param+',' like '%,'+name+'%,'
--即:',View_16,View_17,' like '%,'+name+'%,'
--2 也可以用charindex函数
charindex( ','+name+',' ,','+@param+',' )>0
charindex( ','+name+',' ,',View_16,View_17,')>0
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询