2

我正在使用存储程序在 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' 

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

4

3 回答 3

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
于 2013-08-10T10:22:24.193 回答
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

于 2013-08-10T17:07:57.833 回答
0

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

于 2020-11-29T16:20:41.123 回答