如何在 teradata sql 中创建动态 table 名称

How to create dynamic table name in teradata sql

如何在 Teradata 中创建动态 table 名称?

我已经使用 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 中编写类似的内容?

您必须使用存储过程动态生成 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);

还有其他(更清晰的)形式从动态返回结果 SQL,这只是一种方式。

Manual