sql存储过程中不能把表名也定义成变量

create proc usp_SelectCount
@table varchar(200)
as
select count (*) from @table
上面是我创建一个存储过程,但是报错
消息 1087,级别 15,状态 2,过程 usp_SelectCount,第 4 行
必须声明表变量 "@table"。
难道表名不能定义成变量么?

第1个回答  2010-05-11
不行。如果想这么干,就拼个语句,然后用exec 执行。

decalre @sql varchar(2000)

set @sql = 'select count (*) from' + @table

exec (@sql)
第2个回答  2010-05-11
可以
不过得用动态语句
create proc usp_SelectCount
@table varchar(200)
as
begin
declare @str varchar(300)
set @str='select count(*) from '+@table
exec(@str)
end
第3个回答  推荐于2017-11-28
数据 库中如果表名想定义成变量就要用动态语句
create proc usp_SelectCount
@table varchar(200)
as
declare @sql varchar(max)
set @sql='select count (*) from '+@table
exec(@sql)本回答被提问者采纳

求教sql server 可以把列名当做变量吗?
可以啊,在存储过程中,可以把列名当变量赋值

求教sql server 可以把列名当做变量吗?
不可以,列名、表名都不能用变量,可以通过拼接字符,然后用exec来执行 如,exec('update tb set '+列名变量+'='''+字符类的变量值+''' where 条件')

sql的存储过程中可否用table 型作参数,怎样用
存储过程不支持的 可以考虑使用用户定义函数来实现,如:CREATE FUNCTION Order_Customer (@FirstName varchar(20),@LastName varchar(20))RETURNS @Order_Customer_Tab TABLE (OrderID int,GoodsName varchar(20),CustomerName varchar(40))BEGIN INSERT @Order_Customer_Tab SELECT OrderID,GoodsName,Fi...

关于给SQL存储过程表名作为参数的问题
定义 一个变量 DECLARE @sql Varchar(max)set @sql= 'SELECT * FROM' +@TableName+ 'where Row between' + @startRecordIndex +'and'+ @endRecordIndex --最后再 exec @sql 纯页面手打,也不知道有没有格式上错误,但意思已经表达的很清楚了 ALTER procedure [dbo].[P_Pro_Women](@start...

sql 存储过程中 如何使用declare 有的存储过程声明了,有的没有声明...
因为不能够声明,所以不与declare一块使用的情况。其实在SQL中将变量一词演译的非常深,还有一类变量就是表名,列名,存储过程等名称,这些名称其实也算是数据库的全局变量的,只要表存在,那么表名一定会存在于master数据库中的一个表中,列名也是一样,这一类的变量有一个特殊,都是已经存在的boject...

SQL存储过程 必须声明标量变量问题 数据库中执行成功,但是当我用程序调...
exec('insert into ' +@tablename+ ' values(@caname,@firsturl,@num,@secondurl,@fromurl,@flg)')修改一下:exec('insert into ' +@tablename+ ' values('+@caname+ ','+@firsturl+ ','+@num+ ','+@secondurl+ ','+@fromurl+ ','+@flg+ ')')...

...server的while循环。怎样使用变量定义数据表名?
用变量定义数据表名是可以的。但是在T-SQL中表名无法直接用变量,要解决此问题,我们可以用存储过程:sp_executesql,该存储过程只接一个参数,即 SQL 语句字符串。如:exec sp_executesql @statement,注意:@statement 参数只能是 ntext\/nchar\/nvarchar 类型。所以按照你的想法, 应该如下:declare @...

sql语句(字段里面不能用变量吗)
sql语句不能直接使用变量。存储过程中可以使用变量,调用存储过程时传递变量,由数据库将变量替换为实际值并执行得到结果。

mysql 定义变量
在PHP、C++等语言里面可以使用变量,在存储过程里面可以使用变量,SQL语句里面不能使用变量的。不过你的要求可以用下面的一个SQL语句实现:insert into YYY表(字段1,字段2,字段3) SELECT 字段1,表达式2,常量3 FROM XXX表 注意:上面是两个表,一般不允许同时对一个表进行操作,如果是一个表,你可以...

sql 在字符串里面定义变量 外面怎么获取
想在动态执行SQL时获得其执行过程中的变量值,那么要使用sp_executesql这个存储过程。它支持输入变量和输出变量,但是变量必须为标量类型,不支持表变量。所以,你要获得动态SQL中的表变量是实现不了的。如果是要获得动态SQL中执行的结果集的话,则可以使用临时表来保存数据。获取动态SQL中变量的示例:declar...

相似回答