TransWikia.com

Llamar a Procedimiento almacenado de SQL usando PHP

Stack Overflow en español Asked by Pike on November 27, 2021

LLevo muy poco con PHP y tengo que hacer una llamada a un procedimiento almacenado en SQL. Nunca lo he hecho.Seguramente es muy simple pero no consigo lograrlo.

1- El procedimiento ya me lo dan dado hecho.

2- El nombre del procedimiento es sp_SubcategoriasMAQ y lo que hace el recuperar las categorías y subcategorias de la web para junto con HTML construir el menú de navegación principal.

3- Los parámetros que reciben son ( copia según me lo han pasado a mi):

  • @Accion ( su tipo de dato es varchar de longitud 50 y debe contener el valor CARGA-ARBOL )
  • @CodCategoria ( su tipo de dato es int y debe contener el valor 0 )
  • @Codigo ( su tipo de dato es int y debe contener el valor 0 )
  • @Descripcion ( su tipo de dato es varchar de longitud 1500 y debe contener el valor vacío )
  • @Baja ( su tipo de dato es bit y debe contener el valor 0 )
  • @Usuario ( su tipo de dato es varchar de longitud 25 y debe contener el valor vacío )
  • @msgError ( es un parámetro de salida, su tipo de dato es int y no necesita que se le mande valor )
  • @msgDescError ( es un parámetro de salida, su tipo de dato es varchar de longitud 1500 y no necesita que se le mande valor )

El código que tengo es el siguiente

<?php
$serverName = 'nameServerinstance'; //serverNameinstanceName
$connectionInfo = array( 'Database'=>'MiDataBase', 'UID'=>'MiUsuario', 'PWD'=>'Password','CharacterSet' => 'UTF-8');
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo 'Procedimiento almacenado.<br />';
}else{
     echo 'Conexión no se pudo establecer.<br />';
     die( print_r( sqlsrv_errors(), true));
}

$params = array (
array('CARGA-ARBOL', SQLSRV_PARAM_IN),
array(0, SQLSRV_PARAM_IN),
array(0, SQLSRV_PARAM_IN),
array('?', SQLSRV_PARAM_IN),
array(0, SQLSRV_PARAM_IN),
array('?', SQLSRV_PARAM_IN),
array('?', SQLSRV_PARAM_OUT),
array('?', SQLSRV_PARAM_OUT),
);
$query ='{call [dbo].[sp_SubcategoriasMAQ] (?,?,?,?,?,?,?,?)}';
$result = sqlsrv_query($conn, $query, $params);
echo $result ;
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

?>

La conexion se realiza perfectamente y obtengo en pantalla el mensaje "Procedimiento almacenado" y nada mas.. ningun mensaje de error .. nada…
Gracias por la ayuda

NOTA no icnluyo nada de codigo HTML porque mi problema es que directamente no obtengo ningun valor devuelto de la base de datos.

One Answer

Antes que nada estar chequeando la variable equivocada ($stmt en vez de $result)

$query ='{call [dbo].[sp_SubcategoriasMAQ] (?,?,?,?,?,?,?,?)}';
$result = sqlsrv_query($conn, $query, $params);
if( $result === false ) {
     print_r( sqlsrv_errors(), true);
     die();
}
echo $result ;

SI aun asi no puedes ver ninguna salida o errores. Puede que efectivamente este ejecutandose, pero sin obtener registros. Puedes probar agregando algo invalido a $query y ver si sale el error en la llamada a sqlsrv_errors()

Answered by F.Igor on November 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP