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() 中的项不固定大小
展开
 我来答
NotigerKuiKui
2011-03-21 · TA获得超过2802个赞
知道大有可为答主
回答量:1592
采纳率:76%
帮助的人:445万
展开全部
中的项不固定大小,应该选一个足够大的值,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'................ 这样的,才能拼对
佳达源
2024-10-28 广告
AR0144CSSM20SUKA0-CPBR这款产品,作为我司产品线中的重要一员,集成了高精度的传感器技术与先进的图像处理算法,广泛应用于安防监控、工业自动化及机器视觉等领域。其卓越的性能与稳定性,确保了在各种复杂环境下的精准数据采集与高效... 点击进入详情页
本回答由佳达源提供
xw310
2011-03-21 · TA获得超过103个赞
知道答主
回答量:299
采纳率:43%
帮助的人:32.3万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1193bb8f7b
2011-03-21 · TA获得超过194个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:275万
展开全部
--假设@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条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式