此功能:
CREATE FUNCTION `GetCardID`(numId INT) RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE retcard INT(11);
SELECT id
INTO retcard
FROM cards
WHERE `number` = numId
AND enabled = 1
LIMIT 1;
RETURN retcard;
END
即使在查询时始终返回null:
SELECT id FROM cards WHERE `number`=<Insert Value Here> AND ENABLED = 1 LIMIT 1;
返回与函数和函数参数中使用的相同值的有效值。
例如:
SELECT id FROM cards WHERE number = 12345 AND ENABLED = 1 LIMIT 1;
- 返回一个id,而
GetCardId(12345);
- 返回null
我在这里缺少什么想法?我认为自己对SQL非常熟练,但在SP上有点绿色。
答案 0 :(得分:1)
克里斯托弗这是你的职责。试试这个它应该有效:
CREATE FUNCTION [dbo].[GetCardID]
(
@Num_ID INT
)
RETURNS int
AS
BEGIN
declare @retcard int
select Top 1 @retcard = id
FROM cards
where number = @num_Id
AND enabled = 1
return @retcard
END
答案 1 :(得分:1)
您正在使用的功能有多大?这个数字是否可能大于适合INT的数字?
答案 2 :(得分:0)
Always returns NULL
:
删除过程定义中的DETERMINISTIC
子句。 MySQL缓存来自这些过程或函数的响应。
摘自MySQL:
如果例程始终产生相同的例程,则该例程被认为是“确定性的” 结果输入参数相同,“不确定” 除此以外。如果既没有给出DETERMINISTIC也没有给出DETERMINISTIC 例程定义,默认为NOT DETERMINISTIC。声明 函数是确定性的,您必须指定DETERMINISTIC 明确地