SQL存储过程可以定义表变量吗?

比如把表做为参数,以下为错误方法,如果可以的话正确的如何写?ALTER PROCEDURE dbo.StoredProcedure1@1 tableASselect * from @1

查了SQL2000的帮助手册,存储过程参数的数据类型。除 table 之外的其他所有数据类型均可以用作存储过程的参数。
所以说不行。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-24
/*存储过程中如果表名想定义成变量就要用动态语句*/
CREATE PROC usp_SelectCount
@table varchar(200)
AS
DECLARE @sql varchar(max)
set @sql='SELECT count (*) FROM '+@table
EXEC(@sql)
第2个回答  2012-06-04
可以的

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

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

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

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

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

存储过程可以传表变量吗
直接的 output 不可以,有一个间接的办法,子存储过程中最后显式地查询表变量 select * from @t,再在存储过程中建立相同结构表变量@t,再用 insert into @t exec 子存储过程名,这样就相当于间接地复制子存储过程的表变量数据。

怎么使用存储过程
系统SP,主要存储master 数据库中,并以sp_为前缀并且系统存储过程主要是从系统表中获取 信息,从而为系统管理员管理SQL Server。用户自定义存储过程是由用户创建,并能完成 某一特定功能,如:查询用户所需数据信息的存储过程。 存储过程具有以下优点 1.存储过程允许标准组件式编程(模块化设计) 存储过程在被创建...

【SQL】存储过程中如何定义数组?
存储过程里定义不了数组。如果是sqlserver,那么你可以用表变量,游标来实现你的功能。如果是sqlserver2005以上的版本,可以做clr存储过程,那里面是可以用数组的。

SQL如何使用在函数中使用变量作为表名执行查询?
是不能这样写的,用动态语句的话,function好像又不支持,改用存储过程吧,如下 CREATE PROCEDURE PROC_SetBatchID table AS NVARCHAR(100),BatchID VARCHAR(11) OUTPUT AS BEGIN DECLARE @sql NVARCHAR(4000)SET NOCOUNT ON;SELECT @sql = N'IF (select Count(*) from ' + RTRIM(LTRIM(@table)...

有关于sqlserver的存储过程的问题:@xxx 和 declare @xxx有什么不同?
我的理解是,应该前提是用了proc 定义了 @XXX 然后在代码执行成功后,用exec @xxx执行的。同一楼说的一样,@XXX 是你已经定义过的,然后拿来用的,然后declare @XXX是你定义的 当然顺便补充一下:如果@XXX是对的,那么在定义的时候,应该是用到proc来定义它的 XXX全局变量 @XXX是局部 ...

相似回答