Каждый раз, когда данные вставляются в таблицу ветвей, я хочу создать таблицу. но имя должно происходить из столбца таблицы ветвей ifsccode - PullRequest
0 голосов
/ 30 мая 2020

Чтобы создать таблицу ветвления:

CREATE TABLE Branch    
(    
    bId int PRIMARY KEY,    
    bName varchar(20),    
    bCity varchar(20),    
    ifscCode varchar(15)    
)    

Процедура создания таблицы с именем c таблицы динамического типа. Имя таблицы - это последнее вставленное значение столбца ifsccode, вставленного в таблицу перехода. Таким образом, каждый раз, когда данные вставляются в таблицу Branch, должна создаваться другая таблица с этим ifscCode именем:

CREATE PROCEDURE spName
AS    
    DECLARE @tableName VARCHAR(200), @Query VARCHAR(7000)

    SET @tableName = 'SELECT TOP 1 ifscCode FROM Branch ORDER BY bId DESC'

BEGIN    
    SET @Query = 'create table ' + @tableName + ' ( bId int, tokenDate date,
slot int, uToken int,username varchar(30),    
FOREIGN KEY (username) REFERENCES UserDetails(username),    
FOREIGN KEY (bId) REFERENCES Branch(bId)    
)'

    EXECUTE (@Query)
END

Вставить данные:

INSERT INTO Branch 
VALUES (1, 'Bandra', 'Mumbai', 'BOI650011')

Ошибка:

Сообщение 156, уровень 15, состояние 1, строка 1
Неправильный синтаксис рядом с ключевым словом «SELECT».

Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис рядом с 'bId'

1 Ответ

0 голосов
/ 30 мая 2020

Хранение имен таблиц в столбцах - вообще плохая идея. Мои общие мысли по этому поводу заключаются в том, что если вы это сделаете, вы должны иметь такое глубокое понимание SQL, что подобный вопрос никогда не возникнет.

В любом случае вы сразу увидите свою проблему, если вы распечатали SQL. Это будет выглядеть примерно так:

'CREATE TABLE SELECT TOP 1 ifscCode FROM Branch ORDER BY bId DESC . . . '

Проблема в следующей строке:

set @tableName = 'SELECT TOP 1 ifscCode FROM Branch ORDER BY bId DESC';

Вы устанавливаете значение @tableName в строку. Вам нужно фактическое значение:

set @tableName = (SELECT TOP 1 ifscCode FROM Branch ORDER BY bId DESC);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...