0

MySQLの手順は次のとおりです。

    CREATE DEFINER = `root`@`%` PROCEDURE `NewProc`(IN comp_id VARCHAR(40))
    BEGIN
    ...
    UPDATE tbl_complaint SET DIDM_Docket_No = '2013-12-12' WHERE Comp_ID = comp_id;
    END;

これは、プロシージャを呼び出すと次のようになります。

    call gen_docketno('{74651651-9D76-C973-175A-97B9B78608A5}')

プロシージャが適切に更新できないのは、パラメーターの値に括弧とダッシュが含まれているためですか? これをSQLクエリで実行すると機能しますが、ストアドプロシージャでは機能しないためです。

    UPDATE tbl_complaint SET DIDM_Docket_No = '2013-12-12' WHERE Comp_ID = '{BF16E293-6CD2-8BC3-91B1-CF5AC70A090B}';

誰かがこの問題を解決する方法を教えてもらえますか?

4

1 に答える 1

5

パラメータの名前を変更しますcomp_id。列名と衝突し、すべてのレコードが更新されます。

CREATE  PROCEDURE `NewProc`(IN _comp_id VARCHAR(40))
BEGIN
...
     UPDATE tbl_complaint 
     SET DIDM_Docket_No = '2013-12-12' 
     WHERE Comp_ID = _comp_id;
END;
于 2013-01-12T12:46:23.047 に答える