Sql server 使用存储过程执行时未显示SQL Server数据

Sql server 使用存储过程执行时未显示SQL Server数据,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个存储过程,如下所示: CREATE PROCEDURE [dbo].[pa_AnadeCine3] @Nombre AS VARCHAR(50) = '', @Empresa AS VARCHAR(50) = '', @CIF AS VARCHAR(12) = '', @Direccion AS VARCHAR(50) = '', @Localidad AS VARCHAR(50) = '', @P

我有一个存储过程,如下所示:

CREATE PROCEDURE [dbo].[pa_AnadeCine3]
    @Nombre AS      VARCHAR(50) = '',
    @Empresa AS     VARCHAR(50) = '',
    @CIF AS         VARCHAR(12) = '',
    @Direccion AS   VARCHAR(50) = '',
    @Localidad AS   VARCHAR(50) = '',
    @Provincia AS   VARCHAR(20) = '',
    @CP AS          VARCHAR(5) = '',
    @Tlf1 AS        VARCHAR(12) = '',
    @NumeroSalas AS SMALLINT = 0,
    @Metro AS       VARCHAR(50) = '',
    @Bus AS         VARCHAR(50) = '',
    @Email AS       VARCHAR(100) = '',
    @GPS AS         VARCHAR(100) = ''
AS
    DECLARE @Fecha AS VARCHAR(23)
    DECLARE @Error AS INT

    SET @Fecha = CONVERT(VARCHAR(23), GETDATE(), 121)

    BEGIN TRANSACTION
        INSERT INTO dbo.SiveCines (Nombre, Empresa, CIF, Direccion, Localidad, Provincia, CP, Tlf1, NumeroSalas, Metro, Bus, Email, GPS, FechaActualizacion)
        VALUES (@Nombre, @Empresa, @CIF, @Direccion, @Localidad, @Provincia, @CP, @Tlf1, @NumeroSalas, @Metro, @Bus, @Email, @GPS, @Fecha)

        SELECT
            @@ERROR    AS N'Error',
            @@ROWCOUNT AS N'Fila',
            @@IDENTITY as N'ID_Cine'

      /* CONTROL DE ERRORES. */
      IF @Error = 0
      BEGIN
          COMMIT TRANSACTION
      END
      ELSE
      BEGIN
          ROLLBACK TRANSACTION
      END
问题是,当我执行这个存储过程时,没有发生错误,并且返回了一个新的
cine\u id
,例如2。但是当我从sivecines中选择*时,数据不会显示在数据库中,其中sivecines.ID_Cine=2,当我查看所有数据时,数据也不会插入。但是当我手动插入新数据时,2的
Id\u cine
将被转义,新Id\u cine将变为3。我不知道ID为2的数据去了哪里


有人能帮我解决这个问题吗?提前感谢

看起来您永远不会提交事务,因为您没有设置@Error

您声明它,然后使用:

  IF @Error = 0
    BEGIN
      COMMIT TRANSACTION
    END
声明变量而不声明变量默认为
NULL

DECLARE @Error INT
SELECT @Error
将返回
NULL

NULL
0:

返回
2


运行proc时检查是否有任何打开的事务,或在查询表时添加带有(NOLOCK)提示的
,以查看数据是否在那里

由于未设置@Error,因此看起来您永远不会提交事务

您声明它,然后使用:

  IF @Error = 0
    BEGIN
      COMMIT TRANSACTION
    END
声明变量而不声明变量默认为
NULL

DECLARE @Error INT
SELECT @Error
将返回
NULL

NULL
0:

返回
2


运行proc时检查是否有任何打开的事务,或者在查询表时添加带有(NOLOCK)
提示的
以查看数据是否存在

您从未设置
@Error
,因此您不知道是否发生了错误,并且(因为默认为0)将始终提交事务,即使您不应该这样做,不要使用@@IDENTITY…..我应该使用什么来代替它identity@ashokpoudel单INSERT语句不需要事务,它们是原子的。如果您想在发生错误时执行某些操作,请使用。同样,单次插入/更新/删除也不需要它statements@ashokpoudel不,不是。他们是否特别书面要求您存储2月31日的日期?不可能。他们可能要求您在客户端应用程序中以某种方式显示日期,但从不存储坏数据。他们可能要求以某种格式显示日期。日期类型没有格式。客户端将它们转换为字符串,并以您从未设置的特定方式显示它们,因此您不知道是否发生了错误,并且(因为它默认为0)将始终提交事务,即使您也不应该这样做,不要使用@@IDENTITY…..我应该使用什么来代替它identity@ashokpoudel单INSERT语句不需要事务,它们是原子的。如果您想在发生错误时执行某些操作,请使用。同样,单次插入/更新/删除也不需要它statements@ashokpoudel不,不是。他们是否特别书面要求您存储2月31日的日期?不可能。他们可能要求您在客户端应用程序中以某种方式显示日期,但从不存储坏数据。他们可能要求以某种格式显示日期。日期类型没有格式。客户端将它们转换为字符串,并以某种方式显示它们