关于给SQL存储过程表名作为参数的问题 100

ALTERprocedure[dbo].[P_Pro_Women](@startRecordIndexint,@endRecordIndexint,@TableNamev... ALTER procedure [dbo].[P_Pro_Women]
(@startRecordIndex int,
@endRecordIndex int,
@TableName varchar(50),
@BrandId int)
as
begin
with temptbl as (SELECT ROW_NUMBER() OVER (ORDER BY ProductId desc)AS Row, * from P_Product_Women where brandid =@BrandId)
SELECT * FROM temptbl where Row between @startRecordIndex and @endRecordIndex
end
把这个改为能把表名作为参数的存储过程,就是我这个存储过程,我需要根据参数@TableName表名来查询
我希望是在我这个存储过程中修改,达到我想要的目的,而不是说放个一个其他事例
展开
 我来答
匿名用户
推荐于2018-03-11
展开全部
定义 一个变量
DECLARE @sql Varchar(max)
set @sql= 'SELECT * FROM' +@TableName+ 'where Row between' + @startRecordIndex +'and'+ @endRecordIndex
--最后再
exec @sql
纯页面手打,也不知道有没有格式上错误,但意思已经表达的很清楚了
ALTER procedure [dbo].[P_Pro_Women]
(@startRecordIndex int,
@endRecordIndex int,
@TableName varchar(50),
@BrandId int,
@sql Varchar(max))
as
begin
set @sql='SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ProductId desc)AS Row, * from '+@TableName +' where brandid ='+@BrandId+') where Row between '+ @startRecordIndex+' and '+@endRecordIndex
exec @sql
end
也不知道你是不是这个意思
景志国敖央
2020-03-15 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:886万
展开全部
这样写当然不正确啊,改为create
procedure
p
@a
varchar(50)
as
declare
@number
int
select
@number=count(*)
from
tb
where
name=@a
print
@number--这句是在查询分析器里输出
@number
return
@number--这句是返回,如果你没有前台程序,只用数据库,可以去掉
这样你前台程序就能接收到
@number的值了
如果你已经创建了存数过程那就改为
alterprocedure
p
@a
varchar(50)
as
declare
@number
int
select
@number=count(*)
from
tb
where
name=@a
print
@number--这句是在查询分析器里输出
@number
return
@number--这句是返回,如果你没有前台程序,只用数据库,可以去掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmonkey
2021-01-13 · 教育领域创作者
个人认证用户
lmonkey
采纳数:69 获赞数:176

向TA提问 私信TA
展开全部

MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式