我正在将基于 MSAccess 的应用程序(+VB 代码)转换为 Web 应用程序。数据库在这个过程中保持不变,这个访问应用程序使用了少数存储过程。
下面的代码执行一个存储过程。
Dim prmJ_YearSeq_pk As ADODB.Parameter
Set cmd1 = New ADODB.Command
cmd1.ActiveConnection = CurrentProject.Connection
cmd1.CommandType = adCmdStoredProc
cmd1.CommandText = "sp_delete_from_t_Job_and_t_Report"
Set prmJ_YearSeq_pk =
cmd1.CreateParameter("@J_YearSeq_pk", adInteger, adParamInput)
cmd1.Parameters.Append prmJ_YearSeq_pk
prmJ_YearSeq_pk.Value = Me.J_YearSeq_pk
cmd1.Execute
现在从 SQL Management Studio 执行相同的存储过程
DECLARE @return_value int
EXEC @return_value = [dbo].[sp_delete_from_t_Job_and_t_Report]
@J_YearSeq_pk = 20110001
SELECT 'Return Value' = @return_value
它抛出一个错误
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。该语句已终止。
我不明白的是,为什么它在 Access 应用程序中工作得很好,但在 Management Studio 或我的 Web 应用程序(PHP PDO)中却不行?