【问题标题】:Create procedure Informix gives syntax error创建过程 Informix 给出语法错误
【发布时间】:2013-09-16 15:38:15
【问题描述】:

我正在尝试创建一个存储过程,该过程将根据传递的 ID 简单地返回相关记录。根据研究,我发现了一些让我像这样制作存储过程的东西:

CREATE PROCEDURE procMessageMembershipSelect1 (membershipnumber char(10))
RETURNING CHAR(10) AS membership_number, SMALLINT as message_id , varchar(200) as 
message, CHAR(1) AS target, DATETIME as date_time_creation, DATETIME as 
date_time_display;
DEFINE rsMembershipNumber CHAR(10);
DEFINE rsMessageID smallint;
DEFINE rsMessage VARCHAR(200);
DEFINE rsTarget CHAR(1);
DEFINE rsDateTimeCreation datetime;
DEFINE rsDateTimeDisplay datetime;
FOREACH
SELECT membership_number, message_id, message, target,date_time_creation, 
date_time_display
INTO rsMembershipNumber, rsMessageID, rsMessage, rsTarget, rsDateTimeCreation, 
rsDateTimeDisplay
FROM MessageMembership
WHERE membership_number = membershipnumber    
ORDER BY date_time_display
RETURN rsMembershipNumber, rsMessageID rsMessage, rsTarget, rsDateTimeCreation,   
rsDateTimeDisplay WITH RESUME;
END FOREACH
END PROCEDURE;

你能帮帮我吗?

【问题讨论】:

  • 缺少最后一个 END FOREACH 的 ;?
  • 当我在 SQL 编辑器中评估该过程时,它在声明部分将我指向“DATETIME as date_time_creation”,但我不知道为什么。

标签: sql stored-procedures syntax informix


【解决方案1】:

您必须在声明日期时间的任何地方设置日期时间变量的精度。 您还在 return 语句中忘记了一个 ','。

正确的过程如下:

CREATE PROCEDURE procMessageMembershipSelect1 (membershipnumber char(10))
RETURNING CHAR(10) AS membership_number, SMALLINT as message_id , varchar(200) as 
message, CHAR(1) AS target, DATETIME year to fraction as date_time_creation, DATETIME          year to fraction as 
date_time_display;
DEFINE rsMembershipNumber CHAR(10);
DEFINE rsMessageID smallint;
DEFINE rsMessage VARCHAR(200);
DEFINE rsTarget CHAR(1);
DEFINE rsDateTimeCreation datetime year to fraction;
DEFINE rsDateTimeDisplay datetime year to fraction;
FOREACH
SELECT membership_number, message_id, message, target,date_time_creation, 
date_time_display
INTO rsMembershipNumber, rsMessageID, rsMessage, rsTarget, rsDateTimeCreation, 
rsDateTimeDisplay
FROM MessageMembership
WHERE membership_number = membershipnumber    
ORDER BY date_time_display
RETURN rsMembershipNumber, rsMessageID, rsMessage, rsTarget, rsDateTimeCreation,   
rsDateTimeDisplay WITH RESUME;
END FOREACH
END PROCEDURE;

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 2022-01-15
    • 2013-05-12
    • 2018-11-21
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多