Я вызываю эту скалярную функцию
CREATE FUNCTION dbo.TryConvertInt(@Value varchar(200))
RETURNS INT
AS
BEGIN
SET @Value = REPLACE(@Value, ',', '')
IF ISNUMERIC(@Value + 'e0') = 0
RETURN NULL
IF (CHARINDEX('.', @Value) > 0 AND CONVERT(bigint, PARSENAME(@Value, 1)) <> 0)
RETURN NULL
DECLARE @I bigint = CASE
WHEN CHARINDEX('.', @Value) > 0
THEN CONVERT(bigint, PARSENAME(@Value, 2))
ELSE CONVERT(bigint, @Value)
END
IF ABS(@I) > 2147483647
RETURN NULL
RETURN @I
END
GO
в этой хранимой процедуре
ALTER PROCEDURE [dbo].[SelectItem]
@identifier VARCHAR(200)
AS
BEGIN
SELECT
tb_Items_Master.item_auto_code AS 'Item Code',
tb_Items_Master.item_name_en AS 'Item Name',
MIN(tb_Quantity_Expire.expity_date) AS 'Expiry',
SUM(tb_Quantity_Expire.quantity) AS 'Stock',
tb_Items_Master.price AS 'Price'
FROM
(tb_Items_Master
INNER JOIN
tb_Quantity_Expire ON tb_Items_Master.item_auto_code = tb_Quantity_Expire.item_auto_code
LEFT JOIN
tb_Items_Codes ON tb_Items_Master.item_auto_code = tb_Items_Codes.item_auto_code)
WHERE
tb_Items_Codes.item_code = @identifier
OR tb_Items_Master.item_name_en LIKE '%'+@identifier+'%'
OR tb_Items_Master.item_name_2 LIKE '%'+@identifier+'%'
-- I'm calling it in the following line
OR tb_Items_Master.item_auto_code = SELECT dbo.TryConvertInt(@identifier)
GROUP BY
tb_Items_Master.item_auto_code, tb_Items_Master.item_name_en,
tb_Items_Master.price;
END
Я получаю ошибку
Невозможно найти ни столбец "dbo", ни пользовательскую функцию, ни агрегат "TryConvertInt", либо имя неоднозначно
Я нашел похожие вопросы, но их ответы не помогли, или я что-то не знаю