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 ;

脚本部分:

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'
                                 ^--      ^--

引号将该“字段”转换为字符串。- 您不是在比较两个字段,而是将 manualref 字段与一个字符串进行比较,该字符串的值恰好是您的 sproc 参数的名称。

尝试:

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