Message "El nombre de objeto '#tblTemp' no es válido."

07/07/2004 - 22:48 por Misael Chuc | Informe spam
Que tal Sres.

Soy nuevo en este asunto de SQL SEVER 2000, tengo el siguiente SP:

CREATE PROCEDURE spIsValidProdSrv
@iPlaceId int,
@iProdSrvid int,
@iNewProdSrvId int,
@iResult int output
AS
declare @iTienePack int,
@iTempProdSrvId int,
@sTempProdSrvType char(1)

/*create table #tblTemp(iTmpProdSrvId int, sTmpProdSrvType
char(1));*/

BEGIN
/* Procedure body */
set @iResult = 0;

create table #tblTemp(iTmpProdSrvId int, sTmpProdSrvType char(1));

if @iProdSrvId = @iNewProdSrvId
set @iResult = 1

if exists (select fkProdSrvId
from tblPlaceProdSrvKit
where fkKitID = @iProdSrvId /* filtra segun id de paquete */
and fkplaceid = @iPlaceId /* filtra segun lugar */
and fkProdSrvId = @iNewProdSrvId)
set @iResult = 1

if @iResult = 0
begin
/* primer inserto a la tabla temporal los prod que ya tiene el
paquete */
insert into #tblTemp
select a.fkProdSrvId,b.ProdSrvType
from tblPlaceProdSrvKit a, tblProdsrv b
where a.fkKitID = @iProdSrvId /* filtra segun id de paquete */
and a.fkplaceid = @iPlaceId /* filtra segun lugar */
and b.pkProdSrvID = a.fkProdSrvID /* para obtener el tipo de cada
item asociado al paquete */

/* despues el prod que se quiere insertar */
insert into #tblTemp
select @iNewProdSrvId, ProdSrvType from tblProdSrv
where pkProdSrvId=@iNewProdSrvId

set @iTienePack = 0

while @iTienePack = 0
begin
if exists (select * from #tblTemp where sTmpProdSrvType='K')
begin
declare CursorTemp cursor READ_ONLY STATIC LOCAL for
select iTmpProdSrvId,sTmpProdSrvType
from #tblTemp
open CursorTemp

WHILE @@FETCH_STATUS = 0
begin
fetch next from CursorTemp into @itempprodsrvid ,
@stempprodsrvtype

if @iTempProdSrvId=@iProdSrvId
begin
set @iResult = 1
set @iTienePack = 1 /* me salgo del otro while */
break
end

if @sTempProdSrvType = 'K' /* descompongo un paquete
*/
begin
insert into #tblTemp
select a.fkProdSrvId,b.ProdSrvType
from tblPlaceProdSrvKit a, tblProdsrv b
where a.fkKitID = @iTempProdSrvId /* filtra segun id
de paquete */
and a.fkplaceid = @iPlaceId /* filtra segun lugar
*/
and b.pkProdSrvID = a.fkProdSrvID /* para obtener el
tipo de cada item asociado al paquete */

delete from #tblTemp where
iTmpProdSrvId=@iTempProdSrvId
break /* me salgo del while */
end
end

Close CursorTemp
Deallocate CursorTemp

end else
set @iTienePack = 1

end
end
drop table #tblTemp
END

GO

Desde el Query Analyzer lo ejecuto de la siguiente forma:

declare @res int exec spIsValidProdSrv 1,12,13, @res output Select @res
Valor

Y me funciona, pero desde mi aplicacion me marca el siguiente error:

"El nombre de objeto '#tblTemp' no es válido."

Aguna idea de que pueda estar haciendo mal.

Saludos
 

Leer las respuestas

#1 MAXI
08/07/2004 - 00:05 | Informe spam
hola, si en en Query funciona es porque no hay problemas de SqlServer!! en
la aplicacion como lo estas haciendo? podes postiarlo?




Maxi

Buenos Aires - Argentina

Desarrollador .NET 3 Estrellas

Mail: Maxi_accotto[arroba]speedy.com.ar

MSN:


"Misael Chuc" escribió en el mensaje
news:%
Que tal Sres.

Soy nuevo en este asunto de SQL SEVER 2000, tengo el siguiente SP:

CREATE PROCEDURE spIsValidProdSrv
@iPlaceId int,
@iProdSrvid int,
@iNewProdSrvId int,
@iResult int output
AS
declare @iTienePack int,
@iTempProdSrvId int,
@sTempProdSrvType char(1)

/*create table #tblTemp(iTmpProdSrvId int, sTmpProdSrvType
char(1));*/

BEGIN
/* Procedure body */
set @iResult = 0;

create table #tblTemp(iTmpProdSrvId int, sTmpProdSrvType char(1));

if @iProdSrvId = @iNewProdSrvId
set @iResult = 1

if exists (select fkProdSrvId
from tblPlaceProdSrvKit
where fkKitID = @iProdSrvId /* filtra segun id de paquete


*/
and fkplaceid = @iPlaceId /* filtra segun lugar */
and fkProdSrvId = @iNewProdSrvId)
set @iResult = 1

if @iResult = 0
begin
/* primer inserto a la tabla temporal los prod que ya tiene el
paquete */
insert into #tblTemp
select a.fkProdSrvId,b.ProdSrvType
from tblPlaceProdSrvKit a, tblProdsrv b
where a.fkKitID = @iProdSrvId /* filtra segun id de paquete */
and a.fkplaceid = @iPlaceId /* filtra segun lugar */
and b.pkProdSrvID = a.fkProdSrvID /* para obtener el tipo de cada
item asociado al paquete */

/* despues el prod que se quiere insertar */
insert into #tblTemp
select @iNewProdSrvId, ProdSrvType from tblProdSrv
where pkProdSrvId=@iNewProdSrvId

set @iTienePack = 0

while @iTienePack = 0
begin
if exists (select * from #tblTemp where sTmpProdSrvType='K')
begin
declare CursorTemp cursor READ_ONLY STATIC LOCAL for
select iTmpProdSrvId,sTmpProdSrvType
from #tblTemp
open CursorTemp

WHILE @@FETCH_STATUS = 0
begin
fetch next from CursorTemp into @itempprodsrvid ,
@stempprodsrvtype

if @iTempProdSrvId=@iProdSrvId
begin
set @iResult = 1
set @iTienePack = 1 /* me salgo del otro while */
break
end

if @sTempProdSrvType = 'K' /* descompongo un paquete
*/
begin
insert into #tblTemp
select a.fkProdSrvId,b.ProdSrvType
from tblPlaceProdSrvKit a, tblProdsrv b
where a.fkKitID = @iTempProdSrvId /* filtra segun


id
de paquete */
and a.fkplaceid = @iPlaceId /* filtra segun lugar
*/
and b.pkProdSrvID = a.fkProdSrvID /* para obtener


el
tipo de cada item asociado al paquete */

delete from #tblTemp where
iTmpProdSrvId=@iTempProdSrvId
break /* me salgo del while */
end
end

Close CursorTemp
Deallocate CursorTemp

end else
set @iTienePack = 1

end
end
drop table #tblTemp
END

GO

Desde el Query Analyzer lo ejecuto de la siguiente forma:

declare @res int exec spIsValidProdSrv 1,12,13, @res output Select @res
Valor

Y me funciona, pero desde mi aplicacion me marca el siguiente error:

"El nombre de objeto '#tblTemp' no es válido."

Aguna idea de que pueda estar haciendo mal.

Saludos

Preguntas similares