执行存储过程查询失败,没有错误

时间:2016-01-04 17:11:00

标签: php sql sql-server sql-server-2008

我试图在SQL Server 2008中对表进行插入,但是我得到一个查询失败,根本没有错误。

这是我的存储过程:

USE [ACREDITA]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[VICOM_INS_IMPACTO]
@IMPC_NOMBRE varchar(100),
@IMPC_OTRO varchar(100)
AS
BEGIN
DECLARE @TranName VARCHAR(200) = 'TRANSACTION'
BEGIN TRANSACTION @TranName
BEGIN TRY
    ---------------------------------------------------------
    IF(@IMPC_NOMBRE = 'otro')
        BEGIN
            INSERT INTO
                VICOM_IMPACTO_MAESTRA(VICOM_IMPACTO_NOM,VICOM_IMPACTO_OTRA)
            VALUES
                (@IMPC_NOMBRE,@IMPC_OTRO)
        END
    ELSE
        BEGIN
            DECLARE @OTRO varchar(100) = NULL

            INSERT INTO
                VICOM_IMPACTO_MAESTRA(VICOM_IMPACTO_NOM,VICOM_IMPACTO_OTRA)
            VALUES
                (@IMPC_NOMBRE,@OTRO)
        END

    SELECT SCOPE_IDENTITY()

    COMMIT TRANSACTION @TranName
    --------------------------------------------------------        
END TRY        
BEGIN CATCH
    --------------------------------------------------------
    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION @TranName
    --------------------------------------------------------
    EXEC ('ACREDITA_GuardarError')
END CATCH

SELECT ERROR_MESSAGE()
END

我试图通过帖子发送的输入如下:

<form action="Backend/grabar_ficha.php" id="ficha_vicom" method="post"       name="ficha_vicom" enctype="multipart/form-data">
    <fieldset>
         <legend>Impacto en la formaci&oacute;n de los estudiantes:</legend>
         <select class="form-control input" name="impacto" onchange="impactoOtro(this);" required >
             <option value="">Seleccione...</option>
             <option value="Formación académica">Formaci&oacute;n acad&eacute;mica</option>
             <option value="Actualización de contenidos">Actualizaci&oacute;n de contenidos</option>
             <option value="Desarrollo práctico y experiencial">Desarrollo pr&aacute;ctico y experiencial</option>
             <option value="otro">Otro</option>
          </select><br>
                            <input type="text" name="impactoO" value="sin info" class="form-control impactoOtro" onkeyup="textCounter(this,'counterImp',100);" maxlength="100" placeholder="especifique" style="display: none;" required />
                            <input value="Caracteres restantes 100" disabled class="counter" id="counterImp" size="25" style="display: none;">
          </fieldset><br>
</form>

我以这种方式得到“impacto”和“impactoO”字段的值......

//Variables impacto actividad
    $impactoO = $_POST['impactoO'];
    $impacto = $_POST['impacto'];

然后调用一个调用SP的php函数

$id_impacto   = $db->VICOM_INS_IMPACTO($impacto, $impactoO);

PHP函数如下:

function VICOM_INS_IMPACTO($name,$otro){

    if($name != "otro"){
        $otro = "null";
    }

    $this->query = "execute VICOM_INS_IMPACTO 
        @IMPC_NOMBRE  = '".utf8_encode($name)."',
        @IMPC_OTRO  = '".utf8_encode($otro)."'";

    $res_ = $this->DB_Insert();     
    return $res_;
}

所有其他以类似方式工作的功能都可以正常工作,但出于某种原因,这个功能并不适用。

我无法使用mssql_last_message而且我没有收到任何特定的错误消息。

error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);

你们认为可能会发生什么?

非常感谢你的帮助。

修改

这些是我得到的错误:

Warning: mssql_query() [function.mssql-query]: Query failed in /web/sites/umayor/acreditacion/AMBTE_PRD_V2/ficha_vicom/Backend/Database.php on line 71





Warning: mssql_fetch_assoc() expects parameter 1 to be resource, boolean given in /web/sites/umayor/acreditacion/AMBTE_PRD_V2/ficha_vicom/Backend/Database.php on line 77

我还打印了我发送的查询,这是我得到的:

SQL statement failed with error QUERY = execute VICOM_INS_IMPACTO   @IMPC_NOMBRE = 'Formación académica', @IMPC_OTRO = 'null'

0 个答案:

没有答案