2011-07-04 6 views
-1
DELIMITER || 

CREATE FUNCTION InsertEvent (IN iPatientMonitoringId BIGINT, 
          IN iTypeId SMALLINT(6), 
          IN iChannelId SMALLINT(6), 
          IN iStart TIMESTAMP, 
          IN iEnd TIMESTAMP) 
RETURNS BIGINT DETERMINISTIC 

BEGIN 

    INSERT INTO Event 
    (Id, PatientMonitoringId, TypeId, ChannelId, StartOcurrence, EndOcurrence) 
    VALUES 
    ('', iPatientMonitoringId, iTypeId, iChannelId, iStart, iEnd); 

    RETURN LAST_INSERT_ID(); 

END || 

DELIMITER ; 

は、このSQLクエリは、私にはOKに見えますが、私はphpmyadminので返されるエラーを理解していないよ:MySQLの構文エラー(ここではMySQLのnoobの)

1064 - あなたはあなたのSQL構文でエラーが発生しています。

+0

それはそれがIN好きではないと言っています。私は何かが前に行くべきかどうか分からない。 – Drazisil

+0

問題が解決した場合は、受け入れた回答に印を付けるようにしてください。 – Drazisil

答えて

3

では、iPatientMonitoringId BIGINTで」近くを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください。http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

Note 
Specifying a parameter as IN, OUT, or INOUT is valid only for a PROCEDURE. 
For a FUNCTION, parameters are always regarded as IN parameters. 

したがって、私はあなたがドロップしなければならないと考えています。

試してみてください。

CREATE FUNCTION InsertEvent (iPatientMonitoringId BIGINT, iTypeId SMALLINT(6), 
iChannelId SMALLINT(6), iStart TIMESTAMP, iEnd TIMESTAMP) RETURNS BIGINT 
DETERMINISTIC 
+0

私は全体を読むべきです、始めにちょうど言う: 'CREATE PROCEDURE sp_name([parameter [、...]] [特性...] routine_body CREATE FUNCTION sp_name([parameter [、...] ]) [復帰型] [特性...] routine_body パラメータ: [IN | OUT | INOUT] param_name type ... ' –