如何在 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,这只是一种方式。
如何在 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,这只是一种方式。