Как создать динамическое c имя таблицы в терадате sql - PullRequest
0 голосов
/ 05 марта 2020

Как я могу создать динамическое c имя таблицы в Teradata?

Я создал динамический c оператор с T- SQL, но не знаю, как это сделать в Teradata. Например, в SQL:

DECLARE @MYTABLENAME NVARCHAR(20);

DECLARE @DYNAMICSQL NVARCHAR(1000);

DECLARE @CURRENT_MONTH_AND_YEAR VARCHAR(100);

SET @MYTABLENAME = 'TEST';

SET @CURRENT_MONTH_AND_YEAR = CONCAT(SUBSTRING(CONVERT(VARCHAR(7), GETDATE(), 126),1,2),SUBSTRING(CONVERT(VARCHAR(7), GETDATE(), 126),6,2));

SET @DYNAMICSQL = 'SELECT * FROM ' + @MYTABLENAME +@CURRENT_MONTH_AND_YEAR VARCHAR;

EXEC(@DYNAMICSQL);

Как мне написать подобное в Teradata?

1 Ответ

0 голосов
/ 05 марта 2020

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

-- Create SP
CREATE PROCEDURE GetEmployeeSalary (
  IN EmpName VARCHAR(100), 
  OUT Salary DEC(10,2)
)
BEGIN
  DECLARE SqlStr VARCHAR(1000);
  DECLARE C1 CURSOR FOR S1;

  SET SqlStr = 'SELECT Salary FROM EmployeeTable WHERE EmpName = ?';

  PREPARE S1 FROM SqlStr;
  OPEN C1 USING EmpName;
  FETCH C1 INTO Salary;
  CLOSE C1;
END;

-- Call SP
CALL GetEmployeeSalary('some_name', Salary);

Существуют другие (более чистые) формы возврата результатов из динамического c SQL, это только один способ.

Руководство

...