@附近的SQL Anywhere语法错误

时间:2013-08-09 22:52:00

标签: sql select stored-procedures sqlanywhere

我正在使用商店程序在ASA 11工作。 例:

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

发送变量@cod并需要结果@name OUTPUT

无法保存但会显示消息:

  

无法在数据库中修改过程'xxx'。句法   第6行'@name'附近的错误[Sybase] [ODBC驱动程序] [SQL Anywhere]语法   第6行'@name'附近的错误SQLCODE:-131 SQLSTATE:42000

在Interactive SQL中,选择正常。

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

请帮我找到语法错​​误? (我说西班牙语。)

3 个答案:

答案 0 :(得分: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 COD_EMPLOY=@cod
END

答案 1 :(得分:0)

是的,程序如何正常,但在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

答案 2 :(得分:0)

谢谢,解决了。尝试更改过程定义