使用存储过程将别名设置为表

时间:2017-05-15 20:23:37

标签: sql-server stored-procedures

我有两张桌子

  • Proceso.srcUnidadesPresupuestadas
  • Proceso.tmpUnidadesPresupuestadas

我想要的是使用存储过程将别名设置为Proceso.tmpUnidadesPresupuestadas(时态表)和Proceso.srcUnidadesPresupuestadas,问题是我是新的使用存储过程我有类似的东西:

--Getting registers of table Proceso.tmpUnidadesPresupuestadas
SELECT 
    Uni.keyCliente, Uni.keyCentro, Uni.keyMaterial, Uni.Periodo, Uni.Mes,
    Uni.UnidadesPresupuestadas, Uni.Plataforma, Uni.mdOrigenCarga, 
    Uni.mdUsuarioCarga, Uni.mdFechaCarga, Uni.bActivo
INTO 
    #tmpUnidadesPresupuestadas
FROM 
    Proceso.tmpUnidadesPresupuestadas Uni

--Insert in table Proceso.srcUnidadesPresupuestadas 
INSERT INTO Proceso.srcUnidadesPresupuestadas (num1, num2, etc) 
VALUES (#tmpUnidadesPresupuestadas.num1, #tmpUnidadesPresupuestadas.num2)

换句话说,我想使用别名来执行以下操作:

INSERT INTO Destino (num1, num2, etc) 
VALUES (Origen.num1, Origen.num2)

此致

2 个答案:

答案 0 :(得分:2)

我认为你对别名是什么感到困惑。别名用于为表或对象提供仅对该查询的范围有效的临时名称。您所描述的内容听起来更像是一个同义词,它是为持久性数据库对象提供替代的方法。

https://docs.microsoft.com/en-us/sql/relational-databases/synonyms/synonyms-database-engine

答案 1 :(得分:1)

如果要从另一个表中插入表,则需要使用INSERT INTO ..... SELECT .....语法 - 例如:

--Insert in table Proceso.srcUnidadesPresupuestadas 
INSERT INTO Proceso.srcUnidadesPresupuestadas (num1, num2, etc) 
    SELECT
        num1, num2, etc
    FROM
        #tmpUnidadesPresupuestadas

如果您拥有所有值作为文字,过程参数或SQL Server变量(INSERT INTO ... VALUES ....等),则@num1语法只能 。但是如果你想从另一个表中选择值,不是