如何在sql中实现表的动态化
是否有人知道如何在stored proc中编写脚本以基于变量运行表(或者是否有可能这样做?) 例如: 我有3个表名为customer、supplier和support 当用户输入1时,则运行表客户、2表供应商和3表支持如何在sql中实现表的动态化,sql,tsql,Sql,Tsql,是否有人知道如何在stored proc中编写脚本以基于变量运行表(或者是否有可能这样做?) 例如: 我有3个表名为customer、supplier和support 当用户输入1时,则运行表客户、2表供应商和3表支持 declare @input int; if @input =1 begin declare @table varchar(50); set @table = 'customer' end if @input =2 begin declare @table varchar(5
declare @input int;
if @input =1
begin
declare @table varchar(50); set @table = 'customer'
end
if @input =2
begin
declare @table varchar(50); set @table = 'supplier '
end
if @input =3
begin
declare @table varchar(50); set @table = 'support'
end
select *
INTO ##test
from @table
是的,您可以通过使用动态sql“EXEC”或“Sp_Executesql”命令来实现 例如:
USE Northwind
GO
CREATE TABLE #MyTemp
( RowID int IDENTITY,
LastName varchar(20)
)
DECLARE @SQL nvarchar(250)
SET @SQL = 'INSERT INTO #MyTemp SELECT LastName FROM Employees;'
EXECUTE sp_executesql @SQL
是的,您可以通过使用动态sql“EXEC”或“Sp_Executesql”命令来实现 例如:
USE Northwind
GO
CREATE TABLE #MyTemp
( RowID int IDENTITY,
LastName varchar(20)
)
DECLARE @SQL nvarchar(250)
SET @SQL = 'INSERT INTO #MyTemp SELECT LastName FROM Employees;'
EXECUTE sp_executesql @SQL
如果真的那么简单,为什么不重复选择呢
if @input =1
begin
Select * INTO ##test From customer
end
if @input =2
begin
Select * INTO ##test From supplier
end
if @input =3
begin
Select * INTO ##test From support
end
如果真的那么简单,为什么不重复选择呢
if @input =1
begin
Select * INTO ##test From customer
end
if @input =2
begin
Select * INTO ##test From supplier
end
if @input =3
begin
Select * INTO ##test From support
end
你为什么要这样做?乍一看,这似乎是个坏主意 您可以发布存储过程正在执行的操作以及任何相关的表吗?我怀疑您可以:
使用动态SQL时会出现一些问题,您应该注意这些问题。是一篇关于利弊的相当全面的文章。为什么要这样做?乍一看,这似乎是个坏主意 您可以发布存储过程正在执行的操作以及任何相关的表吗?我怀疑您可以:
使用动态SQL时会出现一些问题,您应该注意这些问题。是一篇关于优缺点的相当全面的文章。具体内容将取决于您的实际数据库(SQL Server、Oracle、MySQL等),但您应该回答的第一件事是:为什么希望单个存储过程有条件地从三个表中的一个表生成结果,每个都有不同的结构?我同意W.Craig Trader的观点。这让我想起了Sphere的一段电影语录:Ted:“我必须去洗手间。”Harry:“只要去你的腿上,Ted。”Ted:“真的,你可以在里面小便吗?”Harry:“你可以,问题是,你愿意。”具体细节取决于你的实际数据库(SQL Server、Oracle、MySQL等),但您应该回答的第一件事是:为什么希望一个存储过程有条件地从三个表中的一个生成结果,每个表都具有不同的结构?我同意W.Craig Trader的观点。这让我想起了Sphere的一段电影语录:Ted:“我必须去洗手间。”Harry:“只要顺着你的腿走,Ted。”Ted:“真的,你可以在里面小便吗?”Harry:“你可以,问题是,你愿意。”