我正在处理一个SQL Server存储过程。我有一个包含这些列的表
BusName(NVarchar(100) not null)
BusNumber(int, null)
在我的主Bus
表中。
我正在尝试实现搜索功能,用户可以通过BusName
或BusNumber
来获取存储在主Bus
表中的所有结果
我实现了这个存储过程来处理搜索功能:
CREATE PROCEDURE [dbo].[spGetAllBus]
@BusName VARCHAR(512),
@BusNo INT
AS
SET NOCOUNT ON;
BEGIN
SELECT
[BusName],
[ManagingOwner],
[Operator],
[CurrentService], [CurrentRate],
[BusNumber],
[MarketRate],
[EarliestRdel]
FROM
[dbo].[Bus]
WHERE
[BusName] LIKE '%' + @BusName + '%'
OR [BusNumber] LIKE '%' + @BusNo + '%'
END
当我像这样执行这个存储过程时:
DECLARE @return_value int
EXEC @return_value = [dbo].[spGetAllBus]
@BusName = N'emma',
@BusNo = NULL
SELECT 'Return Value' = @return_value
我收到错误
将varchar值" %"转换为int数据类型时转换失败。
我正在努力寻找根本原因,因为我没有在代码中进行任何转换。有人能帮助我吗?任何帮助都将不胜感激。谢谢
1条答案
按热度按时间bxgwgixi1#
如果BusNumber列的类型是INT,则可以如下所示修改存储过程。