2012-02-17 2 views
0

Я использую SQL Server 2005 Management Studio Express. Монеты и темы - мои таблицы. Я создал хранимых процедур с использованием двух указанных выше и получил ударилОшибка параметризованной хранимой процедуры

Error:Msg 102, Level 15, State 1, Procedure themestat, Line 1
Incorrect syntax near 'id2'.

Вот вся моя процедура:

create procedure themestat(id2 In numeric, id1 In numeric) 
is 
    @userid nvarchar(50), @co nvarchar(50), @price nvarchar(50) 
begin 
    update themes set prioirty=1 where themeid=id2; 
    select credits as co from coins where uid=id1; 
    select rate as price from themes where priority=1; 
    if(co>price) 
    begin 
    update themes set status=1 where priority=1; 
    update themes set priority=0 where themeid=id2; 
    end 
    else 
    begin 
    update themes set priority=0 where theme=id2; 
    PRINT 'no sufficient coins' 
    end 
end 

Я хотел бы знать, где я пошло не так ??

+2

Если вы посмотрите на документацию для [create procedure] (http://msdn.microsoft.com/en-us/library/ms187926.aspx), я уверен, что вы поймете, где вы поступили не так. Первым делом было бы объявить параметры '@ parameter', но у вас больше проблем. –

ответ

4

Я не уверен, где у вас есть синтаксис с, но типы данных объявлены как «типа @param», так что первая строка должна гласить:

create procedure themestat 
    @id2 numeric 
    @id1 numeric 

Тогда, очевидно, изменить все ссылки id1 и id2, если это необходимо. В скрипте есть другие синтаксические ошибки (отсутствует declare, is вместо as, возможно, другие - я не выглядел намного ближе).

Это заставляет меня задаться вопросом, пришли ли вы из другого диалекта SQL? Я предлагаю прочитать о CREATE PROCEDURE на MSDN (а также на других страницах).

+0

Я просто хочу убедиться, что можно передать аргументы хранимым процедурам, например, мы выполняем функции (arg1, arg2)? – Rangesh

+0

Это, но ваш синтаксис совершенно неправильный, поэтому я задавался вопросом, откуда у вас этот синтаксис ... –

+0

ye, googled it around, я сделал изменения от is к as, '@' объявлениям, которые отсутствуют в кода, нет никаких проблем об этом. Все, что я ищу, это передать переменные моим хранимым процедурам !! Любая помощь вокруг этого будет приятной :) – Rangesh

Смежные вопросы