sql - 存储过程中的值转换

标签 sql sql-server tsql

我正在尝试在由其他两个值组成的存储过程上设置一个值。假设我们有这张 table

CREATE TABLE [dbo].[Consecutives]
(
        [Consecutives_ID] [INT] IDENTITY(1,1) NOT NULL,
        [Name] [VARCHAR](100) NULL,
        [Value] [INT] NOT NULL,
        [Prefix] [VARCHAR] NOT NULL,
        CONSTRAINT PK_Consecutives PRIMARY KEY (Consecutives_ID)
);

并使用存储过程,我试图创建一个由前缀 + 值组成的值
INSERT INTO [dbo].[Consecutives] ([Name], [Value], [Prefix]) 
VALUES (Users, 50, "USR-")

预期结果将用作另一个表的ID,理论上我们期望的是“USR-50”

在我创建的存储过程中,我无法加入 VARCHARINT ,但我无法连接它们。

这是我的存储过程代码:
CREATE PROCEDURE InsertUser
    (@Name VARCHAR(100),
     @LogIn VARCHAR(100),
     @Pass VARCHAR(100))
AS
    DECLARE @ID VARCHAR(100)

    SET @ID = @ID + (SELECT [dbo].[Consecutives]([Prefix])
                     FROM [dbo].[Consecutives]
                     WHERE Name = 'Usuarios')
                     +
                     (SELECT [dbo].[Consecutives]([value])
                      FROM [dbo].[Consecutives]
                      WHERE Name = 'Usuarios')

    INSERT INTO [dbo].[Users] ([User_ID], [LogIn], [Pass])
    VALUES (@ID, @LogIn, @Pass)

最佳答案

我认为程序中有很多错误,请检查以下语法:

CREATE PROCEDURE InsertUser
(
    @Name varchar(100),
    @LogIn varchar(100),
    @Pass varchar(100)
)
AS

DECLARE @ID varchar(100)

SELECT @ID = CAST([Prefix] AS VARCHAR(50)) + 
             CAST([value]  AS VARCHAR(50))
FROM [dbo].[Consecutives]
WHERE Name = @Name)

INSERT INTO [dbo].[Users] ([User_ID], [LogIn], [Pass])
VALUES (@ID,@LogIn,@Pass)

关于sql - 存储过程中的值转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201120/

相关文章:

sql - 如何用想要的结果做这个 GROUP BY?

sql-server - 无法获取 SQL Server 服务信息 - WMI 问题?

sql - 在单个表中显示 sql while 循环的结果

tsql - 使用 "UNION ALL"和 "GROUP BY"实现 "Intersect"

sql-server - SQL中exec的微妙之处

mysql - Xml 转 Mysql

mysql - 基于 20 个表的 SQL 值求和

SQL查询,返回Max(DateField)的价格

c# - 在sql server中从半径中查找多边形列表

c# - 存储在数据库中时图像的大小