Результаты выбора передаются на вставку в сохраненном процессе - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь создать SP, который найдет ArticleType (pkey, я забыл поставить ID) из другой таблицы на основе предоставленного ArticleTypeName, и использую его для вставки в новую категорию в таблице категорий.Наконец, идентификатор новой строки отправляется обратно в выходной параметр.Я думал, что все было правильно, но я продолжаю получать сообщение о том, что синтаксис вокруг «Вставить» неверен.Я уверен, что мне не хватает чего-то действительно простого!

 ALTER PROCEDURE InsertCategory
        @ParentCatID int,
        @CategoryName varchar(25),
        @ArticleTypeName varchar(15),
        @NewCategoryID int OUTPUT

    AS
    BEGIN
    DECLARE @ArticleType int

    SELECT @ArticleType=ArticleType
    FROM (
        SELECT TOP 1 ArticleType FROM ArticleTypes
        WHERE (ArticleTypeName=@ArticleTypeName))

    INSERT INTO Categories (ParentCatID, CategoryName, ArticleType) VALUES (@ParentCatID, @CategoryName, @ArticleType)

    SET @NewCategoryID = Scope_Identity()
    END

Ответы [ 2 ]

3 голосов
/ 17 января 2011

Подзапрос требует псевдоним.Например, это выдаст ошибку:

select * from (select id from MyTable)

Но это будет работать:

select * from (select id from MyTable) as SubQueryAlias

Так что в вашем случае добавьте псевдоним на этом этапе:

FROM (
        SELECT TOP 1 ArticleType FROM ArticleTypes
        WHERE (ArticleTypeName=@ArticleTypeName)) as SubQueryName;
0 голосов
/ 17 января 2011

Попробуйте использовать SELECT для установки идентичности вместо SET

SELECT @NewCategoryID = Scope_Identity()
...