Foros del Web » Programando para Internet » PHP »

ejecutar procedure de sqlserver con php

Estas en el tema de ejecutar procedure de sqlserver con php en el foro de PHP en Foros del Web. Hola a todos les cuento mi problema... Con el siguiente procedure en ejecuacion con instrucciones sql nativo lo ejecuta de forma normal, y hacae las ...
  #1 (permalink)  
Antiguo 02/04/2009, 12:43
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 0
ejecutar procedure de sqlserver con php

Hola a todos les cuento mi problema...
Con el siguiente procedure en ejecuacion con instrucciones sql nativo lo ejecuta de forma normal, y hacae las comparacaiones correctamente y el resultado es el indicado.

ALTER PROCEDURE [dbo].[proce]
@bool0 varchar(20),
@bool1 varchar(20),
@bool2 varchar(20),
@edo0 varchar(80),
@edo1 varchar(80),
@edo2 varchar(80),
@var varchar(80),
@index int,
@num_regs int
AS


DECLARE @maximo numeric
DECLARE @minimo numeric
declare @buscar nvarchar(10)
declare @buscar1 nvarchar(80)
declare @buscar2 nvarchar(10)
SELECT @maximo = (@index * @num_regs)
SELECT @minimo = @maximo - (@num_regs - 1)

CREATE TABLE #tmpListado(
ID int IDENTITY(1,1),
CVE_ELECT varchar(20),
NOMBRE varchar(80)
)
IF @bool0 = 'x'
begin
exec('insert #tmpListado SELECT CVE_ELECT, NOMBRE from '+ @edo0 + ' where NOMBRE like'+ '''' + @var + '''')
END

IF @bool1 = 'x'
BEGIN
exec('insert #tmpListado SELECT CVE_ELECT, NOMBRE from '+ @edo1 + ' where NOMBRE like'+ '''' + @var + '''')
END

IF @bool2 = 'x'
BEGIN
exec('insert #tmpListado SELECT CVE_ELECT, NOMBRE from '+ @edo2 + ' where NOMBRE like'+ '''' + @var + '''')
END

select * from #tmpListado


Desde php la ejecucion muestra problemas con la ejecucion del SP, mostrando las siguientes lienas.

Warning: mssql_execute() [function.mssql-execute]: message: Procedure or Function 'proce' expects parameter '@edo1', which was not supplied. (severity 16) in C:\Inetpub\wwwroot\ifphp.php on line 28

Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in C:\Inetpub\wwwroot\ifphp.php on line 28


El php ejecutado es el siguiente.:
<?php
// Connect to MSSQL
mssql_connect("servidor", 'sa', 'pass');
mssql_select_db('base');

// Create a new stored prodecure
$stmt = mssql_init('proce');

$pagina=10; $limite=1000; $var='moises sandria garcia';
$bool0='x'; $bool1='x'; $bool2='x';
$var0='VER'; $var1='col3'; $var2='bcs2';
mssql_bind($stmt, "@index", $pagina, SQLINT2);
mssql_bind($stmt, "@num_regs", $limite, SQLINT2);
mssql_bind($stmt, "@var", $var, SQLVARCHAR);

mssql_bind($stmt, "@bool0", $bool0, SQLVARCHAR);
mssql_bind($stmt, "@bool1", $bool1, SQLVARCHAR);
mssql_bind($stmt, "@bool2", $bool2, SQLVARCHAR);

mssql_bind($stmt, "@edo0", $var0, SQLVARCHAR);
mssql_bind($stmt, "@edol", $var1, SQLVARCHAR);
mssql_bind($stmt, "@edo2", $var1, SQLVARCHAR);

mssql_execute($stmt);


mssql_free_statement($stmt);
?>


¿Cual puede ser el problema con el que me estoy enfrentando?o por que motivo sera q me manda ese error al ejecutar el store procedure desde php...( recuerden que funciona perfectamente desde sql)

¡¡¡¡¡¡Encontre que activando en el SP todas las boo0,bool1,bool2, y activando solo edo0 si se ejecuta el sp y comenbtando todo lo que ocntiene edo1 y edo2..si se ejecuta....asi si se ejecuta el procedure creo que el eror es en el uso de los if dentro del procedure

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go



-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[proce]
@bool0 varchar(20),
@bool1 varchar(20),
@bool2 varchar(20),
@edo0 varchar(80),
--@edo1 varchar(80),
--@edo2 varchar(80),
@var varchar(80),
@index int,
@num_regs int
AS


DECLARE @maximo numeric
DECLARE @minimo numeric
declare @buscar nvarchar(10)
declare @buscar1 nvarchar(80)
declare @buscar2 nvarchar(10)
SELECT @maximo = (@index * @num_regs)
SELECT @minimo = @maximo - (@num_regs - 1)

CREATE TABLE #tmpListado(
ID int IDENTITY(1,1),
CVE_ELECT varchar(20),
NOMBRE varchar(80)
)
IF @bool0 = 'NULL'
begin
exec('insert #tmpListado SELECT CVE_ELECT, NOMBRE from '+ @edo0 + ' where NOMBRE like'+ '''' + @var + '''')
END

--IF @bool1 = 'NULL'
--BEGIN
-- exec('insert #tmpListado SELECT CVE_ELECT, NOMBRE from '+ @edo1 + ' where NOMBRE like'+ '''' + @var + '''')
--END
--
--IF @bool2 = 'x'
--BEGIN
-- exec('insert #tmpListado SELECT CVE_ELECT, NOMBRE from '+ @edo2 + ' where NOMBRE like'+ '''' + @var + '''')
--END

select * from #tmpListado

Última edición por asassa; 02/04/2009 a las 13:01
  #2 (permalink)  
Antiguo 02/04/2009, 14:07
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Respuesta: ejecutar procedure de sqlserver con php

hola porfin encontre el problema , era en el sp nno se por que y a que se deba...pero no me dejo hacer mas de variables con el mismo nombre @edo0,@edo1,@edo2, y les cambie el nombre por @edo0, @ed,@e, y el php cambie esta parte por los nombre de la nuevas variables en el store procedure.
mssql_bind($sql_sel2, "@edo0", $var0, SQLVARCHAR);
mssql_bind($sql_sel2, "@ed", $var1, SQLVARCHAR);
mssql_bind($sql_sel2, "@e", $var2, SQLVARCHAR);

y eso fue todo, ....¿alguien sabe por que no me permitio usar la primeras variables?

gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:46.