2013-08-09 3 views
2

Я работаю в ASA 11 с процедурами магазина. Пример:

Ошибка SQL Anywhere Синтаксис рядом с @

CREATE PROCEDURE "DBA"."pa_select_employ"(
     @cod nVARCHAR(10), 
     @name nvarchar(15) OUTPUT) 
BEGIN 
    SELECT @name=name_employ FROM EMPLOY //the line 6 
    WHERE [email protected] 
END 

Отправить переменную @cod и нужно привести @name OUTPUT

не может спасти, но показывает сообщение:

Процедура 'ххх' не может быть изменен в базе данных. Синтаксис ошибка рядом с '@name' в строке 6 [Sybase] [ODBC Driver] [SQL Anywhere] Синтаксис ошибка вблизи '@name' на линии 6 SQLCODE: -131 SQLSTATE: 42000

В Interactive SQL выбор в порядке.

DECLARE @name varchar(15) 
SELECT @name=name_employ FROM EMPLOY 
    WHERE COD_EMPLOY='333333' 

, пожалуйста, помогите мне найти синтаксическую ошибку? (Я говорю по-испански.)

+0

"HELP, я говорю по-испански" - Извините, я не могу с этим поделать. ;) – Guffa

+0

@hcovenas На строке, в которой вы получаете синтаксическую ошибку, пытаетесь ли вы выбрать name_employ из EMPLOY и присвоите ему псевдоним «@name»? –

+0

Да, name_employ - это столбец (таблица EMPLOY) @name является var RETURN – hcovenas

ответ

1

Попробуйте изменить определение процедуры для:

CREATE PROCEDURE "DBA"."pa_select_employ"(
    IN @cod nVARCHAR(10), 
    OUT @name nvarchar(15)) 
BEGIN 
    SELECT @name=name_employ FROM EMPLOY //the line 6 
    WHERE [email protected] 
END 
0

Да как THW prodedure эс нормально, но в Powerbuilder показать те ошибки ERRORSQLSTATE = S1105
[Sybase][ODBC Driver]Invalid parameter type

DECLARE pa_find_name PROCEDURE FOR pa_select_employ
cod =:sle_cod.text, //input
name =: sle_name.text ; //out
EXECUTE pa_find_name;

IF SQLCA.sqlcode<>0 THEN
MESSAGEBOX("","ERROR" + SQLCA.sqlerrtext)
END IF

+0

Является ли COD_EMPLOY числовым полем? поэтому тип данных nvarchar действительно будет недействительным. – Stephen

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

  • Нет связанных вопросов^_^