有没有人知道如何在存储过程中编写脚本以根据变量运行表(或者可以这样做吗?)?
例如: 我有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(50); set @table = 'supplier '
end
if @input =3
begin
declare @table varchar(50); set @table = 'support'
end
select *
INTO ##test
from @table
答案 0 :(得分:1)
如果真的那么简单,为什么不重复选择?
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
答案 1 :(得分:0)
是的,您可以使用动态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
答案 2 :(得分:0)
你为什么要这样做?乍一看似乎是一个坏主意。
您可以发布存储过程正在执行的操作以及任何相关表吗?我怀疑你可以:
使用您应该注意的动态SQL时会出现几个问题。 Here是一篇关于利弊的相当全面的文章。