Вашему первому нужен псевдоним таблицы
SELECT COUNT(Field1_)
FROM
(
SELECT Field1_
<snip>
WHERE DeliveryPoint_ = @Field1
) AS foo
Ваш второй должен начинаться
DECLARE CountedRows int;
SELECT CountedRows = COUNT(*)
FROM Profiles_
WHERE Field1_ = @Param1 AND RowNum < 2;
Чтобы быть синтаксически правильным.Также используйте END;
не END IF;
Однако это дает вам потенциальное состояние гонки.Поскольку вы работаете на SQL Server 2008, вам следует обратиться к MERGE
для выполнения такого рода UPSERT
Насколько я вижу, весь второй может быть заменен на.
MERGE INTO Profiles_
USING (VALUES(@Param1_) )T(P1)
ON Field1_ = P1
WHEN MATCHED THEN
UPDATE SET Field2_ = @Param2_,
Field3_ = @Param3_,
Field4_ = @Param4_
WHEN NOT MATCHED BY TARGET THEN
INSERT
VALUES (P1, @Param2_, @Param3_, @Param4_);