Мне нужна помощь с простым кодом SQL:
DECLARE @procExists int
SET @procExists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'dbo' AND ROUTINE_NAME = 'Table_Exists' AND ROUTINE_TYPE = 'PROCEDURE')
IF NOT @procExists > 0
BEGIN
-- test query
-- SELECT 'Something' = @procExists;
-- error throwing code
-- CREATE PROCEDURE Table_Exists
-- @schemaName varchar(50),
-- @tableName varchar(50)
-- AS
-- RETURN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = @schemaName AND TABLE_NAME = @tableName)
END
Простой код выше:
- объявляет переменную типа int
- проверяет, существует ли процедура dbo.Table_Exists
- Если не существует, он создает его
Моя проблема - это информация об ошибке:
Msg 156, Level 15, State 1, Line 9
Incorrect syntax near the keyword 'PROCEDURE'.
Msg 137, Level 15, State 2, Line 13
Must declare the scalar variable "@schemaName".
Не знаю почему, но ..
- когда я выполняю 'CREATE PROCEDURE' тело в одиночку оно работает
- когда я выполняю весь раздел IF , исключая тело 'CREATE PROCEDURE', простой запрос работает
- когда я выполняю весь раздел ЕСЛИ , включая тело 'CREATE PROCEDURE', выдается ошибка
Чего мне не хватает?