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

Preguntas similare

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

Respuesta Responder a este mensaje
#2 Misael Chuc
08/07/2004 - 00:18 | Informe spam
Que tal Maxi,


Realmente lo estoy llamando desde un WebService y este el codigo :

Public Function GetTheBrowse() As DataSet
Try
Call OpenCn()
If mErrorState <> 0 Then Exit Function
Dim daBrowse As New SqlDataAdapter(msSQLSentence, m_cn)
Dim dsBrowse As New DataSet

Try
daBrowse.FillSchema(dsBrowse, SchemaType.Mapped,
"DataBrowse") > Aqui me marca el Error.
daBrowse.Fill(dsBrowse, "DataBrowse")

Catch ex As Exception
daBrowse.MissingMappingAction = MissingMappingAction.Error
daBrowse.MissingSchemaAction = MissingSchemaAction.Error
dsBrowse = Nothing
msErrorContext = ex.Message
End Try
Call CloseConnection()
Return dsBrowse
Catch ex As Exception
msErrorContext = ex.Message
End Try
End Function

Esta funcion es parte del Web Method pero, en escencia en esta funcion me
marca error.

Al web method le paso los siguientes parametros:

username, password y la sentencia SQL : declare @res int exec
spIsValidProdSrv 1,12,13, @res output Select @res Valor

Esta misma sentencia la ejecuto en el Query y me funciona.

MAXI 7/7/04 5:05:50 PM >>>






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

Respuesta Responder a este mensaje
#3 Misael Chuc
09/07/2004 - 15:18 | Informe spam
Gracias, Maxi, hechare una revisada al news de ADO.NET

Saludos desde Cancun, México

MAXI 7/9/04 12:33:50 AM >>>






hmm ni idea, creo que deberias hacer la consulta en el news de ADO.NET
porque parece ser un problema de esos.

Un abrazo




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 Maxi,


Realmente lo estoy llamando desde un WebService y este el codigo :

Public Function GetTheBrowse() As DataSet
Try
Call OpenCn()
If mErrorState <> 0 Then Exit Function
Dim daBrowse As New SqlDataAdapter(msSQLSentence, m_cn)
Dim dsBrowse As New DataSet

Try
daBrowse.FillSchema(dsBrowse, SchemaType.Mapped,
"DataBrowse") > Aqui me marca el Error.
daBrowse.Fill(dsBrowse, "DataBrowse")

Catch ex As Exception
daBrowse.MissingMappingAction MissingMappingAction.Error
daBrowse.MissingSchemaAction = MissingSchemaAction.Error
dsBrowse = Nothing
msErrorContext = ex.Message
End Try
Call CloseConnection()
Return dsBrowse
Catch ex As Exception
msErrorContext = ex.Message
End Try
End Function

Esta funcion es parte del Web Method pero, en escencia en esta funcion me
marca error.

Al web method le paso los siguientes parametros:

username, password y la sentencia SQL : declare @res int exec
spIsValidProdSrv 1,12,13, @res output Select @res Valor

Esta misma sentencia la ejecuto en el Query y me funciona.

>>> MAXI 7/7/04 5:05:50 PM >>>
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
>




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida