【问题标题】:How to create dynamic table name in teradata sql如何在 teradata sql 中创建动态表名
【发布时间】:2020-06-17 12:49:11
【问题描述】:

如何在 Teradata 中创建动态表名?

我使用 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-server teradata-sql-assistant


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 2019-01-29
      • 2012-12-03
      • 2019-03-13
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      相关资源
      最近更新 更多