Я пытаюсь поместить инструкцию IF/ELSE в хранимую процедуру.IF и ELSE внутри хранимой процедуры
CREATE PROCEDURE [dbo].[Sp_enty_srch_attr_vals]
(@ENTY_ID INT,
@FIELD_ID INT,
@VALUE VARCHAR(5000),
@SQL VARCHAR(5000)
)
AS
BEGIN
IF (@FIELD_ID = 148)
SET nocount ON;
SET @SQL = 'SELECT DISTINCT [GPI] FROM [GPI_ASOC] WHERE [GPI] LIKE ''%@VALUE%'' ORDER BY GPI';
SET @SQL = replace(@SQL, '@VALUE', @VALUE);
EXEC SP_EXECUTESQL @SQL;
ELSE
SET nocount ON;
DECLARE @ENTY_TABLE_NAME VARCHAR(500)
SET @ENTY_TABLE_NAME = (SELECT TOP 1 enty_table_name
FROM enty
WHERE enty.enty_id = @ENTY_ID)
EXEC('SELECT DISTINCT ATTR_VAL FROM '[email protected]_TABLE_NAME+'_ATTR WHERE FIELD_ID='[email protected]_ID+
' AND ATTR_VAL LIKE ''%'[email protected]+'%'' ORDER BY ATTR_VAL ')
END
Я получаю эту ошибку, и я ударил головой о стену, пытаясь ее исправить.
Msg 156, Level 15, State 1, процедура Sp_enty_srch_attr_vals, строка 14 [Batch Start Line 17]
Неправильный синтаксис около ключевого слова 'ELSE'.
Что не так в этом скрипте?
Не указывайте свои хранимые процедуры с префиксом «sp_» на SQL Server. – pmbAustin
@pmbAustin Хорошо, я изменю их. Зачем? –
Префикс «sp_» используется системой для системных процедур, которые хранятся в основной базе данных. Сначала он вызывает поиск хранимой процедуры в master, а затем в вашей текущей базе данных, так что это удар производительности. Вот несколько деталей: https://sqlperformance.com/2012/10/t-sql-queries/sp_prefix – pmbAustin