在使用存储过程将nvarchar数据类型从select查询转换为Integer数据类型并将其插入我的数据库时,我遇到了这个问题;
我已经在互联网上搜索了很多次如何解决我的问题,但是,我发现的密码无法解决我的问题。
这是我的密码
USE [SLCBRegistrarDB]
GO
/****** Object: StoredProcedure [dbo].[CountLabfees] Script Date:
10/30/2017 7:06:43 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[CountLabfees]
@LabSubject nvarchar(50)
as
BEGIN
SET NOCOUNT ON;
Declare @SQL NVARCHAr(MAX)
SET @LabSubject = REPLACE(@LabSubject,',',''',''')
SET @SQL='SELECT Distinct(TESTFeeSETUP.[Fee Code])
FROM TESTFeeSETUP INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee
Specification] = TESTFeeSETUPSubTable.[Specification ID]
WHERE TESTFeeSETUPSubTable.Specification in (''' + @LabSubject + ''')'
Declare @Quantity NVARCHAr(MAX)
SET @Quantity='SELECT Count(FEESList.[Fee Description]) AS Quantity
FROM FEESList INNER JOIN TESTFeeSETUP ON FEESList.FeeID =
TESTFeeSETUP.FeeID INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee
Specification] = TESTFeeSETUPSubTable.[Specification ID]
WHERE TESTFeeSETUPSubTable.Specification in (''' + @LabSubject + ''')'
Declare @Total NVARCHAr(MAX)
SET @Total='SELECT Distinct(TESTFeeSETUP.[Amount/Cost])
FROM TESTFeeSETUP INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee
Specification] = TESTFeeSETUPSubTable.[Specification ID]
WHERE TESTFeeSETUPSubTable.Specification in (''' + @LabSubject + ''')'
EXEC (@SQL)
EXEC (@Total)
EXEC (@Quantity)
END
BEGIN
INSERT INTO FeesStudentBILLING VALUES(10,@SQL,@Quantity,@Total,1,1)
END每次我执行代码时,都会出现这个错误,
“无法将nvarchar数据类型的选择计数(FEESList.Fee Description)从FEESList内连接的数量转换为FEESList.FeeID = TESTFeeSETUP.FeeID内连接的FEESList.FeeID=TESTFeeSETUP.FeeID内部连接TESTFeeSETUPSubTable ON TESTFeeSETUP.Fee = TESTFeeSETUPSubTable.Specification ID,其中TESTFeeSETUPSubTable.Specification在(‘+ @LabSubject +’)中转换为整数数据类型”
我对编程很陌生,所以我真的需要一些帮助。谢谢
发布于 2017-10-30 14:03:29
如果你做这样的事情,对你来说就容易多了:
,例如( Server 2016)
DECLARE @LabSubjectTable TABLE(Value NVARCHAR(50))
INSERT INTO @LabSubjectTable
SELECT value FROM STRING_SPLIT(@LabSubject, ',')
SELECT Distinct(TESTFeeSETUP.[Fee Code]) AS FeeCode
FROM TESTFeeSETUP AS t1
INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee Specification] = TESTFeeSETUPSubTable.[Specification ID]
WHERE TESTFeeSETUPSubTable.Specification in (SELECT value FROM @LabSubjectTable)
SELECT Count(FEESList.[Fee Description]) AS Quantity
FROM FEESList INNER JOIN TESTFeeSETUP ON FEESList.FeeID = TESTFeeSETUP.FeeID
INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee Specification] = TESTFeeSETUPSubTable.[Specification ID]
WHERE TESTFeeSETUPSubTable.Specification in (SELECT value FROM @LabSubjectTable)
SELECT Distinct(TESTFeeSETUP.[Amount/Cost]) AS AmountCost
FROM TESTFeeSETUP INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee Specification] = TESTFeeSETUPSubTable.[Specification ID]
WHERE TESTFeeSETUPSubTable.Specification in (SELECT value FROM @LabSubjectTable)更新:
https://stackoverflow.com/questions/47016483
复制相似问题