SQL 提示必须声明表变量

USE[idlist]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[ccout]@lxv... USE [idlist]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ccout]
@lx varchar(10),
@id varchar(30),
@zt varchar(10),
@sjbh varchar(10)
AS
begin
set nocount on
declare @sql nvarchar(500)
declare @int int
if @lx='1'
begin
With T
As
(
Select Top 1 * From @id Where 状态=1 Order by newid() '这里出的错误
)
Update T Set 状态=2
Output inserted.编号,inserted.账号,inserted.密码

end
else
begin
set @sql='update '+@id+' set 状态='+@zt+' where 编号='+@sjbh
exec(@sql)
end
set nocount off
end
对存储过程不太了解,在调试运行存储过程时提示必需声明表变量@id,求大神帮忙
展开
 我来答
鲜美还清湛灬白桦N
推荐于2016-06-02 · TA获得超过621个赞
知道小有建树答主
回答量:404
采纳率:50%
帮助的人:529万
展开全部
Create PROCEDURE [dbo].[ccout]
@lx varchar(10),
@id varchar(30),
@zt varchar(10),
@sjbh varchar(10)
AS
begin
set nocount on
declare @sql nvarchar(500)
declare @int int
if @lx='1'
begin
Set @sql='
With T
As
(
Select Top 1 * From '+@id+' Where 状态=1 Order by newid()
)
Update T Set 状态=2
Output inserted.编号,inserted.账号,inserted.密码 '
end
else
begin
set @sql='update '+@id+' set 状态='+@zt+' where 编号='+@sjbh
end

exec (@sql)
set nocount off
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7558ae7
2014-04-06 · TA获得超过5797个赞
知道小有建树答主
回答量:1730
采纳率:50%
帮助的人:1704万
展开全部
看的出@id是一个内存表,你的语句里面没有定义,或者程序不完整
追问
ID是一个参数,传进来的表名,请问这样的要如何定义呢
追答
据我所知参数是不可以用表的,如果要声明也要知道表结构才行

比如
declare @id table (状态 int)

但你的里面已经存在@id的变量了,所以不能再用@id作表名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式