当前位置:首页 » 编程语言 » sql存储过程表名变量
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql存储过程表名变量

发布时间: 2022-07-02 00:57:46

存储过程中表名为变量,并且查询结果要赋给另一个变量

赋值号前面是变量名;
赋值号后面是表达式;
表达式可以是常量,比如:a=1;
也可以是:
a=1;
b=a*4+5;
表达式的形式比较多,慢慢接触就熟悉了。

② plsql中如何执行存储过程

实现的方法和详细的操作步骤如下:

1、第一步,双击plsql图标进入登录界面,输入用户名和密码,然后传输数据库实例名称,如下图所示,然后进入下一步。

③ 表名为变量的SQL查询

一个语句可能比较难实现,需要考虑使用存储过程或多条SQL语句,
呵呵,希望能有帮助,^_^

④ sql server存储过程如何动态生成表名

--楼主
--表变量的基本用法

--有一种常规的用法 就是声明表变量 输出表变量里面的数据 这里不管表变量的表是什么

--例子如下

declare @tt table(id int)

insert into @tt

values(1)

select * from @tt

go

--但有的时候 可能会有需要 要输出表名 或自定义表名 那么这个时候要声明字符串 而不是表变量

--方法如下

declare @tt varchar(12)

set @tt=convert(char(10),getdate(),120)

print ('select * from '+@tt)

print @tt

--exec ('select * from '+@tt)

⑤ 存储过程中我的sql语句中有变量,还是表名,该怎么写这个sql请看一下。

如果可以的话,建议你写一个存储过程,这样,就可以使用循环,以及拼接字符串了

⑥ sql server 存储过程 表变量名无法用在查询字符串中

要注意一点:用execute执行的动态SQL中是无法直接使用外部所定义的变量的(就好像执行动态SQL内与外是两个不同的会话。用存储过程sp_executesql倒是可以传递其他标量类型的参数,但是也无法传递表变量)。而你要实现的功能是在执行动态SQL之前,已经把数据查询到一个表变量中了,然后要在动态SQL中再查询此表变量,目前来说是不能实现的。

可以使用临时表,或者游标,这两个可以在动态SQL中保持有效状态。

使用游标的示例如下:

declare@tbtable(usernamenvarchar(20))
insertinto@tb
select'Andy'
union
select'Jack'
declarecurcursorfor
selecttop10usernamefrom@tb
declare@sqlnvarchar(1000),@usernamenvarchar(20)
set@sql='opencur
fetchnextfromcur
into@v_user_name'
executesp_executesql@sql,N'@v_user_namenvarchar(20)output',@usernameout
closecur
deallocatecur
select@username

而对于你的要在动态SQL中执行select语句,直接使用临时表会比较方便些。

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

不行。如果想这么干,就拼个语句,然后用exec 执行。

decalre @sql varchar(2000)

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

exec (@sql)

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

查了SQL2000的帮助手册,存储过程参数的数据类型。除 table 之外的其他所有数据类型均可以用作存储过程的参数。
所以说不行。

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

定义 一个变量
DECLARE @sql Varchar(max)
set @sql= 'SELECT * FROM' +@TableName+ 'where Row between' + @startRecordIndex +'and'+ @endRecordIndex
--最后再
exec @sql
纯页面手打,也不知道有没有格式上错误,但意思已经表达的很清楚了
ALTER procere [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 ProctId desc)AS Row, * from '+@TableName +' where brandid ='+@BrandId+') where Row between '+ @startRecordIndex+' and '+@endRecordIndex
exec @sql
end
也不知道你是不是这个意思