Как сделать таблицу динамической в ​​SQL - PullRequest
1 голос
/ 28 июля 2010

Кто-нибудь знает, как написать скрипт в хранимой процедуре для запуска таблицы на основе переменной (или это можно будет сделать?)?

например: У меня есть 3 таблицы с именами клиент, поставщик и поддержка

при вводе пользователем 1, затем запустить таблицу customer, 2 таблицы поставщика и 3 table support

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

Ответы [ 3 ]

1 голос
/ 28 июля 2010

ЕСЛИ это действительно так просто, почему бы просто не повторить Select?

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
0 голосов
/ 28 июля 2010

Почему вы хотите это сделать? На первый взгляд это кажется плохой идеей.

Можете ли вы опубликовать, что делает ваша хранимая процедура и какие-либо соответствующие таблицы? Я подозреваю, что вы можете:

  1. Измените вашу схему таким образом что вы больше не будете делать это
  2. Создание разных хранимых процедур делать то, что вы хотите на каждом столе, вместо того, чтобы форсировать его в один процесс.

При использовании динамического SQL возникает несколько проблем, о которых вам следует знать. Здесь - достаточно полная статья о плюсах и минусах.

0 голосов
/ 28 июля 2010

да, вы можете сделать это с помощью динамического 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...