簡體   English   中英

SQL Server 2014中的CONCAT

[英]CONCAT in SQL Server 2014

我想在存儲過程中使用CONCAT時遇到問題。 我按執行並得到此錯誤信息:

男子195,尼維爾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

CONCAT是在SQL Server 2012中添加的。檢查服務器的版本,也許您未按照預期使用2014:

SELECT @@VERSION

此外,您實際上並不需要CONCAT ,也不需要檢查LEN即可將整數轉換為帶前導零的字符串:

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

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM