0

MySql IN パラメータ - ストアド プロシージャで使用する場合、VarChar IN パラメータ val を一重引用符で囲む必要がありますか?

従来の ASP コードを通常どおりに作成しましたが、列を更新できません。

VarChar パラメータを引用符で囲む必要はありますか?

DELIMITER $$

DROP PROCEDURE IF EXISTS `usp_update_map_record` $$
CREATE DEFINER=`ddddddd`@`%` PROCEDURE `usp_update_map_record`(
  IN p_intGrillId INT(10),
  IN p_intPartId INT(10),
  IN p_ManRef VARCHAR(10)
)
BEGIN

UPDATE parts_map SET manualref = 'p_ManRef' WHERE grillid = p_intGrillId AND partid = p_intPartId;

END $$

DELIMITER ;

VBSCRIPT 部分:

With comm
    .ActiveConnection = conn
    .CommandType = adCmdStoredProc
    .CommandText = "usp_update_map_record"
    .Parameters.Append .CreateParameter("p_intGrillId", adInteger, adParamInput, 10, intGrillId)
    .Parameters.Append .CreateParameter("p_intPartId", adInteger, adParamInput, 10, CIntPartId)
    .Parameters.Append .CreateParameter("p_ManRef", adVarChar, adParamInput, 10, strManualRef)
    .Execute
End With

また、3 つの値すべてをテストしましたが、空ではありません。

ありがとう。

4

1 に答える 1

1

これは正しくありません:

UPDATE parts_map SET manualref = 'p_ManRef'
                                 ^--      ^--

引用符は、その「フィールド」を文字列に変換します。- 2 つのフィールドを比較するのではなく、manualref フィールドを、たまたま sproc のパラメーターの名前である値を持つ文字列と比較しています。

試す:

UPDATE parts_map SET manualref = @p_ManRef
                                 ^--- variable/parameter indicator
于 2012-12-04T15:29:40.403 に答える