Sql server 子查询返回了多个结果错误

Sql server 子查询返回了多个结果错误,sql-server,Sql Server,我正在将基于MSAccess的应用程序+VB代码转换为web应用程序。数据库在这个过程中保持不变,这个access应用程序使用了一些存储过程 下面的代码执行一个存储过程 Dim prmJ_YearSeq_pk As ADODB.Parameter Set cmd1 = New ADODB.Command cmd1.ActiveConnection = CurrentProject.Connection cmd1.CommandType = adCmdStoredProc cmd1.Command

我正在将基于MSAccess的应用程序+VB代码转换为web应用程序。数据库在这个过程中保持不变,这个access应用程序使用了一些存储过程

下面的代码执行一个存储过程

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
它抛出了一个错误

子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。 声明已终止


我不明白的是,为什么它在Access应用程序中工作得很好,而在Management Studio或我的web应用程序PHP PDO中工作得不好?

您需要提供sp_delete_from_t_Job_和_t_Report的定义。可能在某个地方有一个子查询返回多行,其中需要标量。一些较旧的数据库在多行由标量查询返回时只使用第一行。使用更符合标准的数据库时,必须重新写入查询以仅返回一行。