2017-05-02 88 views
1

我想在存儲過程中使用CONCAT時遇到問題。我按執行,並得到該錯誤消息:CONCAT在SQL Server 2014中

男子195 NIVEL 15,埃斯塔10,Procedimiento upd_agregar,拉利內阿96'
CONCAT」是無法識別的內置函數名稱。

這是我的表:

create table sucursales 
(
    idSucursal nvarchar(5) primary key, 
    idEmpresa int not null, 
    sucursal nvarchar(25) not null, 
    direccion nvarchar(100) not null, 
    telefono nvarchar(25), 
    email  nvarchar(25) not null, 
    constraint fk_suc_emp foreign key(idEmpresa) 
       references empresas(idEmpresa) 
) 

這是我的查詢:

create procedure upd_agregar 
    (@idEmpresa int, 
    @sucursal nvarchar(25), 
    @direccion nvarchar(100), 
    @telefono nvarchar (25), 
    @email nvarchar(25)) 
as 
    declare @longitud int, @codEmpresa nvarchar(2),@codSucursal nvarchar (2) 

    --Generar codigo de empresa 
    IF len(@idEmpresa) < 2 
     SET @codEmpresa = CONCAT ('0',@idEmpresa) 
    ELSE 
     SET @codEmpresa = @idEmpresa 
GO 

,然後當我要做出選擇這樣的,我收到一個錯誤,我必須聲明一個標量變量@codSucursal:

SELECT @codSucursal = isnull(max(cast(substring (idSucursal,4,2)AS int)),0) + 1 FROM sucursales 
WHERE idEmpresa = @idEmpresa 

回答

2

CONCAT在SQL Server 2012中添加 檢查服務器的版本,也許你沒有使用2014年你認爲:

SELECT @@VERSION 

再說了,你並不真的需要CONCAT這裏,你不要」噸需要檢查LEN整數轉換成字符串用前導零:

SET @codEmpresa = RIGHT('00' + CAST(@idEmpresa as nvarchar(2)), 2) 
+0

我使用2014版 –

0

試試這個:

create procedure upd_agregar 
    (@idEmpresa int, @sucursal nvarchar(25),@direccion nvarchar(100),@telefono nvarchar (25),@email nvarchar(25)) 
    as 
     declare @longitud int, @codEmpresa nvarchar(2),@codSucursal nvarchar (2) 
     --Generar codigo de empresa 
     IF len(CAST(@idEmpresa AS NVARCHAR(2))) < 2 
     SET @codEmpresa = CONCAT ('0', CAST(@idEmpresa AS NVARCHAR(2))) 
     ELSE 
     SET @codEmpresa = @idEmpresa 

     PRINT @codEmpresa 
    GO 

-- EXEC upd_agregar 1, 'B', 'C', 'D', 'E' 
-- Result: 01