我正面临着SO link所述的确切问题,但尚未得到解答。我已经尝试了评论部分中提出的建议,没有任何作用。
我在网上搜索了答案,发现没有运气。
我的程序看起来像这样。
DROP PROCEDURE IF EXISTS userdb.new_test;
CREATE PROCEDURE userdb.new_test (IN arg varchar(255))
BEGIN
select * FROM message
END;
从此link我知道了
此异常表示使用不正确的输入参数调用方法。然后,您必须做的唯一事情是更正输入参数的值。为了实现这一点,请遵循堆栈跟踪中的调用堆栈,并检查哪个方法产生了无效参数。
有谁知道如何解决这个问题?
答案 0 :(得分:1)
这很可能是因为过程IN arg varchar(255)
中的非默认值参数,如果没有错误,您可能在不传递任何参数的情况下调用过程。你需要像
call userdb.new_test 'some value'
MySQL
同样在SQL Server
中不支持参数默认值,因此您无法说IN arg varchar(255) = null
此外,我没有看到您在查询中使用该参数,因此最好放弃它;
DROP PROCEDURE IF EXISTS userdb.new_test;
CREATE PROCEDURE userdb.new_test
BEGIN
select * FROM message
END;