Delphi XE:TSQLQuery引发“输入参数不匹配”

Delphi XE:TSQLQuery引发“输入参数不匹配”,sql,delphi,firebird,dbexpress,mismatch,Sql,Delphi,Firebird,Dbexpress,Mismatch,我在Firebird 2.5中创建了一个存储过程SP_TEST,它返回一个选择并使用3个输入参数。 这个SP_测试在IBExpress中运行良好,当我输入SQL命令:select*fromssp_TEST1,2,3时,结果是正确的 但是,当我在Delphi XE中使用dbExpress组件进行相同的选择时,会引发消息输入参数不匹配。 我使用的是TSQLQuery组件,CommandText属性设置为select*from SP_TEST1,2,3。 当我在CommandText属性中定义了与在S

我在Firebird 2.5中创建了一个存储过程SP_TEST,它返回一个选择并使用3个输入参数。 这个SP_测试在IBExpress中运行良好,当我输入SQL命令:select*fromssp_TEST1,2,3时,结果是正确的

但是,当我在Delphi XE中使用dbExpress组件进行相同的选择时,会引发消息输入参数不匹配。 我使用的是TSQLQuery组件,CommandText属性设置为select*from SP_TEST1,2,3。 当我在CommandText属性中定义了与在SP_测试中定义的相同的查询时,我得到了一个很好的结果。 但在select语句中包含具有正确参数数的存储过程名称会引发此错误消息

谁能告诉我我做错了什么

更新-从伪答案移动并添加了格式:

在IBExpert中输入语句:

SELECT * FROM SP_TEST(2014,1,'0001')
返回多行的结果集

当我将相同的查询传递给TSQLQuery.CommandText或SQL属性时,我也尝试了这个方法,消息输入参数不匹配被引发

我尝试了TSQLStoredProc,但是当我使用Open方法时,查询没有返回一个消息游标

事实上,我的存储过程是一种视图,我喜欢dbExpress组件TSQLQuery或TSQLStoredProc中的结果。 如前所述,当我将完整的SQL代码放在SELECT。。。和TSQLQuery.SQL属性中的groupby,我得到结果行。使用存储过程直到现在都失败。

您的第三个参数是VARCHAR,但您尝试使用select*from SP_TEST1,2,3,这里的第三个参数是整数。这也是与实际工作的过程调用的唯一区别

因此,请使用:

select * from SP_TEST(1,2,'3')

注意3周围的引号

我很困惑。您说使用SQL命令“select*from PROC”可以工作,但是使用select*from SP_TEST失败。它们是两种不同的语句,一种使用PROC,另一种使用SP_测试。你能解释一下你的实际问题是什么吗?应该执行sp_test1,2,3。。。显示代码。显示SP的声明。显示如何安排TSQLQuery、更改的所有属性以及如何打开它—所有内容。我们不能猜测我们看不见的东西。并显示准确的逐字错误文本。您的查询从SP_TEST1,2,3中选择*完全没有参数。请使用TSQLQuery.SQL属性而不是TSQLQuery.CommandText属性。或者切换到TSQLStoredProc。TSQLStoredProc是否可以从SP读取多行@抱歉,第一个参数列表是一个快速示例,最后一个示例是列出的SP I的真实参数列表:选择*自SP_TEST2014,1,'0001'
select * from SP_TEST(1,2,'3')