Quantcast
Channel: Forum SQL Server Database Engine
Viewing all articles
Browse latest Browse all 15889

A server cursor cannot be opened on the given statement or statements. Use a default result set or client cursor

$
0
0

Hi,

I'm using a stored procedure to return data for a report. The stored procedure is used through recordset, so the application send's code to open the result as a cursor.

When I run the stored procedure through SSMS, I have no error. But when the procedure is executed through the application I receive the error "A server cursor cannot be opened on the given statement or statements. Use a default result set or client cursor".

I can only see this error through SQL Profiler, this error doesn't appear in the applicaton screen. But I would like to eliminate this error. I think something in the procedure isn't compatible with the open_cursor, but I'm not sure about what to change.

The code the applicaton sends to the database :

declare @p1 int
set @p1=NULL
declare @p3 int
set @p3=557064
declare @p4 int
set @p4=98305
declare @p5 int
set @p5=NULL
exec sp_cursoropen @p1 output,N'exec ksp_Relatorio_Central_Boleto ''2721782'',''2'',''18''',@p3 output,@p4 output,@p5 output
select @p1, @p3, @p4, @p5

The stored procedure :

ALTER PROCEDURE [dbo].[ksp_Relatorio_Central_Boleto]
@CODIGO VARCHAR (1000), @AgdEve_TipoEvento CHAR (1), @unidade_id INT
AS
set nocount on
declare @checkin_com_senha char(1)
select @checkin_com_senha = checkin_com_senha from parametro_unidade where unidade_id = @unidade_id

if @checkin_com_senha is null
set @checkin_com_senha = 'S'

IF @AgdEve_TipoEvento = '1' --CONSULTA
BEGIN
SELECT RTRIM(UNID_MARC.UNID_DESCRICAO) + ' DE ' + RTRIM(MUN_UNID.MUN_DESCRICAO) AS UNIDADE,
UNID_MARC.UNID_TELEFONEAS UNID_FONE,
isnull(Upper(RTrim(TipLogr.Descricao)) + ' ' + CEP_UNID.CEP_LOGRADOURO + ', ' + EN.END_NUMERO, CEP_UNID.CEP_LOGRADOURO + ', ' + EN.END_NUMERO) AS UNID_ENDERECO,
'C' AS TIPO,
'COMPROVANTE DE AGENDAMENTO DE CONSULTA' AS TITULO,
CONVERT(varchar, ac.AgendaConsulta_Id) AS NUMERO,
case @checkin_com_senha
when 'S' then ac.agdcon_senha
when 'N' then ''
end SENHA, 
convert(char(10),ac.agd_datahora,103) AS DATA,
ac.agd_hora_marcada AS HORA,
left(rtrim(u.unid_sigla) + '-' + u.unid_descricao,35) AS UNIDADE_CONSULTA,
isnull(um.unimov_localidade, isnull(Upper(RTrim(TipLogrU.Descricao)) + ' ' + CEP_U.CEP_LOGRADOURO + ', ' + ENU.END_NUMERO, CEP_UNID.CEP_LOGRADOURO + ', ' + EN.END_NUMERO)) AS UNIDCON_ENDERECO,
U.UNID_TELEFONEAS UNIDCON_FONE,
Usu.USU_NOME AS OPERADOR,
convert(char(10),ac.agdcon_data_marcacao,103) AS DATA_MARCACAO,
CONVERT(CHAR(5),AC.agdcon_data_marcacao,108) AS HORA_MARCACAO,
P.PAC_NOME AS PACIENTE,
CASE
WHEN P.pac_cartao_nsaude IS NOT NULL THEN 'NR CARTAO NAC.SAUDE: '
WHEN P.PAC_CODIGO IS NOT NULL THEN 'NR PROVISORIO: '
WHEN P.PACIENTE_ID IS NOT NULL THEN 'NR PROVISORIO: '
END AS IDENTIFICACAO,
case
WHEN P.pac_cartao_nsaude IS NOT NULL THEN P.pac_cartao_nsaude
WHEN P.PAC_CODIGO IS NOT NULL THEN P.PAC_CODIGO
WHEN P.PACIENTE_ID IS NOT NULL THEN CONVERT(varchar, P.PACIENTE_ID)
END AS CODIGO_PACIENTE,
ES.ESP_DESCRICAO AS CLINICA,
PROF.PROF_NOME AS MEDICO,
space(50) AS EXAME,
space(50) AS PREPARO,
AA.Mensagem1 AS agdeve_Mensagem1,
AA.Mensagem2 AS agdeve_Mensagem2,
AA.Mensagem3 AS agdeve_Mensagem3
Fromagenda_consulta ac 
left join profissional_lotacao lot on lot.proflot_codigo = ac.proflot_codigo
left join profissional prof on prof.profissional_id = lot.profissional_id
left join especialidade es on es.esp_codigo = lot.esp_codigo
left join unidade u on u.unidade_id = lot.Unidade_id
left join Endereco ENU on ENU.End_codigo = u.End_codigo
left join Tipo_Logradouro TipLogrU on ENU.Cod_SUS_Tiplogr = TipLogrU.Cod_SUS_Tiplogr
--left join usuario usu on usu.usuario_id = ac.usuario_id
inner join usuario usu on usu.usuario_id = ac.usuario_id
LEFT JOIN PARAMETRO_SISTEMA PS ON PS.unid_codigo_central= PS.unid_codigo_central
left join unidade UNID_MARC on UNID_MARC.UNIDADE_ID = PS.unid_codigo_central
left join Endereco EN on En.End_codigo = UNID_MARC.End_codigo
left join Tipo_Logradouro TipLogr on En.Cod_SUS_Tiplogr = TipLogr.Cod_SUS_Tiplogr
left join cep CEP_UNID on CEP_UNID.cep_sequencial = EN.cep_sequencial
left join municipio MUN_UNID on MUN_UNID.mun_codigo = CEP_UNID.mun_codigo
left join cep CEP_U ON CEP_U.CEP_SEQUENCIAL = ENU.cep_sequencial
LEFT JOIN paciente p on p.paciente_id = ac.paciente_id
left join Appointment_Agenda AA ON AA.Id = AC.AppointmentAgendaId
left join unidade_movel um on um.unidade_id = u.unidade_id and ac.agd_datahora between um.unimov_dtinicial and um.unimov_dtfinal
WHERE CONVERT(varchar, ac.AgendaConsulta_Id) in (select valor from dbo.Split(@CODIGO,',')) --= @CODIGO

END
ELSE
BEGIN

SELECT RTRIM(UNID_MARC.UNID_DESCRICAO) + ' DE ' + RTRIM(MUN_UNID.MUN_DESCRICAO) AS UNIDADE,
UNID_MARC.UNID_TELEFONE AS UNID_FONE,
isnull(Upper(RTrim(TipLogr.Descricao)) + ' ' + CEP_UNID.CEP_LOGRADOURO + ', ' + EN.END_NUMERO, CEP_UNID.CEP_LOGRADOURO + ', ' + EN.END_NUMERO) AS UNID_ENDERECO,
'E' AS TIPO,
'COMPROVANTE DE AGENDAMENTO DE EXAME' AS TITULO,
CONVERT(varchar, ae.AgendaExame_id) AS NUMERO,
case @checkin_com_senha
when 'S' then ae.ageexa_senha
when 'N' then ''
end SENHA, 
convert(char(10),ae.AgeExa_DataHora,103) AS DATA,
convert(char(5), ae.AgeExa_DataHora, 108) AS HORA,
ae.AgeExa_hora_marcada AS HORA_MARCADA,
left(rtrim(u.unid_sigla) + '-' + u.unid_descricao,35) AS UNIDADE_CONSULTA,
isnull(um.unimov_localidade, isnull(Upper(RTrim(TipLogrU.Descricao)) + ' ' + CEP_U.CEP_LOGRADOURO + ', ' + ENU.END_NUMERO, CEP_UNID.CEP_LOGRADOURO + ', ' + EN.END_NUMERO)) AS UNIDCON_ENDERECO,
U.UNID_TELEFONE AS UNIDCON_FONE,
Usu.USU_NOME AS OPERADOR,
CONVERT(CHAR(10),ae.AgeExa_DataHora_Marcacao,103) AS DATA_MARCACAO,
CONVERT(CHAR(5),ae.AgeExa_DataHora_Marcacao,108) As HORA_MARCACAO,
P.PAC_NOME AS PACIENTE,
CASE 
WHEN P.pac_cartao_nsaude IS NOT NULL THEN 'NR CARTAO NAC.SAUDE: '
WHEN P.PAC_CODIGO IS NOT NULL THEN 'NR PROVISORIO: '
WHEN P.PACIENTE_ID IS NOT NULL THEN 'NR PROVISORIO: '
END AS IDENTIFICACAO,
case
WHEN P.pac_cartao_nsaude IS NOT NULL THEN P.pac_cartao_nsaude
WHEN P.PAC_CODIGO IS NOT NULL THEN P.PAC_CODIGO
WHEN P.PACIENTE_ID IS NOT NULL THEN CONVERT(varchar, P.PACIENTE_ID)
END AS CODIGO_PACIENTE,
space(50) AS CLINICA,
space(50) AS MEDICO,
spe.[solpedexa_descricao] AS EXAME,
PE.PAEX_DS_PREPARO PREPARO,
AA.Mensagem1 AS agdeve_Mensagem1,
AA.Mensagem2 AS agdeve_Mensagem2,
AA.Mensagem3 AS agdeve_Mensagem3
Fromagenda_exame ae 
left join unidade u on u.unidade_id = ae.unidade_id
left join Endereco ENU on ENU.End_codigo = u.End_codigo
left join Tipo_Logradouro TipLogrU on ENU.Cod_SUS_Tiplogr = TipLogrU.Cod_SUS_Tiplogr
--left join usuario usu on usu.usuario_id = ae.usuario_id
inner join usuario usu on usu.usuario_id = ae.usuario_id
LEFT JOIN PARAMETRO_SISTEMA PS ON PS.unid_codigo_central = PS.unid_codigo_central
left join unidade UNID_MARC on UNID_MARC.unidade_id = PS.unid_codigo_CENTRAL
left join Endereco EN on En.End_codigo = UNID_MARC.End_codigo
left join Tipo_Logradouro TipLogr on En.Cod_SUS_Tiplogr = TipLogr.Cod_SUS_Tiplogr
left join cep CEP_UNID on CEP_UNID.cep_sequencial = EN.cep_sequencial
left join municipio MUN_UNID on MUN_UNID.mun_codigo = CEP_UNID.mun_codigo
left join cep CEP_U ON CEP_U.CEP_SEQUENCIAL = ENU.cep_sequencial
LEFT JOIN paciente p on p.paciente_id = ae.paciente_id
LEFT JOIN solicitacao_pedido_exame SPE ON SPE.SOLICITACAOPEDIDOEXAME_ID=AE.SOLICITACAOPEDIDOEXAME_ID
LEFT JOIN SERVICO_REDE SEREDE ON SEREDE.SERE_CODIGO=EXARED_CODIGO
left join Procedimento PC on PC.PROC_TX_CODIGO_ACESSO = SEREDE.CO_PROCEDIMENTO
left join Appointment_Agenda AA ON AA.Id = AE.AppointmentAgendaId
left join unidade_movel um on um.unidade_id = u.unidade_id and ae.ageexa_datahora between um.unimov_dtinicial and um.unimov_dtfinal
left join PARAMETRO_EXAMES PE on SEREDE.SERE_CODIGO=PE.SERE_CODIGO
WHERECONVERT(varchar, ae.AgendaExame_Id) in (select valor from dbo.Split(@CODIGO,',')) --= @CODIGO

END


Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp


Viewing all articles
Browse latest Browse all 15889

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>