2017-05-02 5 views
1

Ich habe ein Problem, wenn ich CONCAT innerhalb meiner gespeicherten Prozedur verwenden möchte. Ich drücke auszuführen und diese Fehlermeldung erhalten:CONCAT in SQL Server 2014

Mens 195, 15 Nivel, Estado 10, Procedimiento upd_agregar, Línea 96'
CONCAT‘ist keine anerkannte integrierte Funktion Namen.

Dies ist meine Tabelle:

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 

und dann, wenn ich ein wählen wie diese machen wollen, erhalte ich einen Fehler, ich muss erklären:

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) 
) 

Diese meine Abfrage ist eine skalare Variable @codSucursal:

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

Antwort

2

CONCAT wurde in SQL Server hinzugefügt 2012. die Version des Servers überprüfen, vielleicht sind Sie nicht 2014 verwenden, wie Sie denken:

SELECT @@VERSION 

Außerdem Sie nicht wirklich CONCAT hier brauchen, und Sie don‘ t müssen die LEN zu überprüfen, eine ganze Zahl in einen String mit führenden Nullen konvertieren:

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

Ich benutze die Version 2014 –

0

starten:

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