Inquiridor
Duvida procedure

Pergunta
-
Olá pessoal,
Preciso de uma ajuda, caso seja possivel fazer o que eu pretendo.
No sistema tem uma procedure, onde eu precisava fazer um where de determinado campo, porem
sem passar parametros nessa procedure, na imagem abaixo vou tentar explicar melhor:
Eu precisava saber todos os nomes onde os campos ULTIMOATO e ULTIMARECEPCAO, é igual a null, porem
a procedure so funciona se eu passar o parametro como mostrado acima.
Como eu faria para listar todos os registros onde os campos ULTIMOATO e ULTIMARECEPCAO é igual a null?
Existe alguma forma de fazer isso ?
Todas as Respostas
-
Felipe,
Tente utilizando na sua condição where:
ULTIMOATO IS NULL AND ULTIMARECEPCAO IS NULL
ou
ISNULL(ULTIMOATO, '') = '' AND ISNULL(ULTIMARECEPCAO, '') = ''
Ricardo Minoru Makiyama
- Sugerido como Resposta Leonardo Lourenço Silva quarta-feira, 11 de setembro de 2013 20:14
- Editado Ricardo Minoru Makiyama quarta-feira, 11 de setembro de 2013 20:14
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 14 de setembro de 2013 16:51
-
Desculpe, mas sou novo no SQL,
como ficaria para eu dar um select na PR, pois tentei e nao aceita
eu preciso fazer com select + where.
algo como select Pr_ e depois o where
- Editado Felipe_Senna1 quinta-feira, 12 de setembro de 2013 11:10 acres
-
-
Felipe,
Você pode especificar seu parâmetro como opcional também, assim não precisará informá-lo na sua chamada:
ALTER PROCEDURE [dbo].[pr_PesquisarNomeSelecionarContraditorio]
.. Outros parametros
@ULTIMOATO VARCHAR(100) = NULL,
@ULTIMARECEPCAO VARCHAR(100)=NULL,
AS
BEGIN.. NO SEU WHERE FICARIA ALGO ASSIM:
WHERE (ISNULL(@ULTIMOATO, '') = '' OR ULTIMOATO = @ULTIMOATO)
AND (ISNULL(@ULTIMARECEPCAO , '') = '' OR ULTIMARECEPCAO = @ULTIMARECEPCAO )
END
Ricardo Minoru Makiyama
- Sugerido como Resposta Leonardo Lourenço Silva quinta-feira, 12 de setembro de 2013 12:06
-
No caso a procedure é essa:
eu preciso fazer um select na procedure para pegar aqueles campos,
USE [WebRI]
GO
/****** Object: StoredProcedure [dbo].[pr_PesquisarNomesSelecionarContraditorio] Script Date: 12/09/2013 09:38:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object: Stored Procedure dbo.pr_PesquisarNomesSelecionarContraditorio Script Date: 05/07/2013 20:08:02 ******/
/****** Object: Stored Procedure dbo.pr_PesquisarNomesSelecionarContraditorio Script Date: 12/04/2013 13:39:16 ******/
/****** Object: Stored Procedure dbo.pr_PesquisarNomesSelecionarContraditorio Script Date: 07/02/2013 11:44:14 ******/
/****** Object: Stored Procedure dbo.pr_PesquisarNomesSelecionarContraditorio Script Date: 17/12/2012 09:24:16 ******/
/****** Object: Stored Procedure dbo.pr_PesquisarNomesSelecionarContraditorio Script Date: 26/09/2012 12:32:02 ******/
/****** Object: Stored Procedure dbo.pr_PesquisarNomesSelecionarContraditorio Script Date: 28/06/2012 19:17:43 ******/
ALTER Procedure [dbo].[pr_PesquisarNomesSelecionarContraditorio](
@PK_Pessoa Int = Null,
@Nome VarChar(300) = Null,
@Documento VarChar(18) = Null,
@Documento2 VarChar(18) = Null,
@PK_FlagRecepcao Int = Null,
@PK_Recepcao Int = Null)
As Begin
--Declare @PK_Pessoa Int
--Declare @Nome VarChar(200)
--Declare @Documento VarChar(18)
--Declare @PK_FlagRecepcao Int
--Declare @PK_Recepcao Int
--
--Set @PK_Pessoa = null
--Set @Nome = 'rodolpho tuffic'
--Set @Documento = ''
--Set @PK_FlagRecepcao = null
--Set @PK_Recepcao = null
Declare @DiasPermContradAposRegistro Int
Declare @DiasPermContradAposValidade Int
Declare @PesquisarDocumentoNumeroMaximoDigitos Int
Select @DiasPermContradAposRegistro = DiasPermContradAposRegistro,
@DiasPermContradAposValidade = DiasPermContradAposValidade,
@PesquisarDocumentoNumeroMaximoDigitos = PesquisarDocumentoNumeroMaximoDigitos
From tblWRIParametros
Declare @Pessoas Table(PK_Pessoa Int)
Set @PK_Recepcao = Case When @PK_Recepcao=0 Then Null Else @PK_Recepcao End
Set @PK_Pessoa = Case When @PK_Pessoa=0 Then Null Else @PK_Pessoa End
If @PK_Pessoa Is Not Null
Begin
Insert @Pessoas
Values (@PK_Pessoa)
End
Else Begin
If (@Documento<>'')
Begin
If (@PesquisarDocumentoNumeroMaximoDigitos>0)
Begin
If (Len(@Documento)>@PesquisarDocumentoNumeroMaximoDigitos)
Set @Documento = Substring(LTRim(RTrim(@Documento)),1,@PesquisarDocumentoNumeroMaximoDigitos)
Insert @Pessoas
Select tblWRIDocumentos.FK_tblWRIPessoas_Id
From tblWRIDocumentos
Where tblWRIDocumentos.Numero_Documento LIKE RTrim(LTrim(@Documento)) + '%'
And Not Exists
(
Select *
From @Pessoas B
Where B.PK_Pessoa=tblWRIDocumentos.FK_tblWRIPessoas_Id
)
End
Else Begin
Insert @Pessoas
Select tblWRIDocumentos.FK_tblWRIPessoas_Id
From tblWRIDocumentos
Where tblWRIDocumentos.Numero_Documento=@Documento
And Not Exists
(
Select *
From @Pessoas B
Where B.PK_Pessoa=tblWRIDocumentos.FK_tblWRIPessoas_Id
)
End
End
If (@Documento2<>'')
Begin
If (@PesquisarDocumentoNumeroMaximoDigitos>0)
Begin
If (Len(@Documento2)>@PesquisarDocumentoNumeroMaximoDigitos)
Set @Documento2 = Substring(LTRim(RTrim(@Documento2)),1,@PesquisarDocumentoNumeroMaximoDigitos)
Insert @Pessoas
Select tblWRIDocumentos.FK_tblWRIPessoas_Id
From tblWRIDocumentos
Where tblWRIDocumentos.Numero_Documento LIKE RTrim(LTrim(@Documento2)) + '%'
And Not Exists
(
Select *
From @Pessoas B
Where B.PK_Pessoa=tblWRIDocumentos.FK_tblWRIPessoas_Id
)
End
Else Begin
Insert @Pessoas
Select tblWRIDocumentos.FK_tblWRIPessoas_Id
From tblWRIDocumentos
Where tblWRIDocumentos.Numero_Documento=@Documento2
And Not Exists
(
Select *
From @Pessoas B
Where B.PK_Pessoa=tblWRIDocumentos.FK_tblWRIPessoas_Id
)
End
End
If (@Nome<>'')
Begin
Insert @Pessoas
Select A.PK_Pessoa
From dbo.fn_PesquisarPessoas(@Nome,1,1) A
Where Not Exists
(
Select *
From @Pessoas B
Where B.PK_Pessoa=A.PK_Pessoa
)
End
End
Declare @Tabela Table(
PK_Pessoa Int,
PK_Ato Int,
PK_FlagRecepcao Int,
PK_Recepcao Int,
PK_SeqTitulo Int,
Alterar Bit Default 1)
Set Ansi_Nulls Off
Insert @Tabela
Select A.PK_Pessoa,
C.PK_Ato,
Case When IsNull(E.PK_FlagRecepcao,0)>IsNull(C.PK_FlagRecepcao,0) Then E.PK_FlagRecepcao Else C.PK_FlagRecepcao End,
Case When IsNull(E.PK_Recepcao,0)>IsNull(C.PK_Recepcao,0) Then E.PK_Recepcao Else C.PK_Recepcao End,
Case When IsNull(E.PK_SeqTitulo,0)>IsNull(C.PK_SeqTitulo,0) Then E.PK_SeqTitulo Else C.PK_SeqTitulo End,
Case When C.PK_Ato Is Not Null Then 0 Else 1 End
From @Pessoas A
Left Join
(
Select B.PK_Pessoa,
Max(tblWRIAtosNegocios.FK_tblWRIAtos_Id) As PK_Ato,
Max(tblWRIAtosTitulos.FK_tblWRIRecepcaoFlagRecepcao) As PK_FlagRecepcao,
Max(tblWRIAtosTitulos.FK_tblWRIRecepcaoRecepcao) As PK_Recepcao,
Max(tblWRIAtosTitulos.PK_SeqTitulo) As PK_SeqTitulo,
0 As Tipo
From @Pessoas B
Inner Join tblWRIAtosParticipantes
On tblWRIAtosParticipantes.FK_tblWRIPessoas_Id=B.PK_Pessoa
Inner Join tblWRIAtosNegocios
On tblWRIAtosNegocios.PK_Id=tblWRIAtosParticipantes.FK_tblWRIAtosNegocios_Id
Inner Join tblWRIAtos
On tblWRIAtos.PK_Id=tblWRIAtosNegocios.FK_tblWRIAtos_Id
Left Join tblWRIAtosTitulos
On tblWRIAtosTitulos.FK_tblWRIAtos_Id=tblWRIAtos.PK_Id
Group By
B.PK_Pessoa
) C
On C.PK_Pessoa = A.PK_Pessoa
Left Join
(
Select D.PK_Pessoa,
Max(tblWRITitulosParticipantes.FK_tblWRIRecepcaoFlagRecepcao) As PK_FlagRecepcao,
Max(tblWRITitulosParticipantes.FK_tblWRIRecepcaoRecepcao) As PK_Recepcao,
Max(tblWRITitulosParticipantes.PK_SeqTitulo) As PK_SeqTitulo
From @Pessoas D
Inner Join tblWRITitulosParticipantes
On tblWRITitulosParticipantes.FK_tblWRIPessoas_Id=D.PK_Pessoa
Where (tblWRITitulosParticipantes.FK_tblWRIRecepcaoFlagRecepcao <> @PK_FlagRecepcao
Or tblWRITitulosParticipantes.FK_tblWRIRecepcaoRecepcao <> @PK_Recepcao)
Group By
D.PK_Pessoa
) E
On E.PK_Pessoa = A.PK_Pessoa
Update @Tabela
Set Alterar = dbo.fn_RegraContraditorio(
GetDate(),
tblWRIRecepcao.DtExpiraPrn,
tblWRIRecepcao.DtCancelamento,
tblWRITitulos.DataUltimoRegistro,
tblWRIRecepcao.FlagRegParcial,
tblWRIRecepcao.DtExpiraReentrada,
@DiasPermContradAposRegistro,
@DiasPermContradAposValidade)
From @Tabela A
Inner Join tblWRITitulos
On tblWRITitulos.FK_tblWRIRecepcaoFlagRecepcao=A.PK_FlagRecepcao
And tblWRITitulos.FK_tblWRIRecepcaoRecepcao=A.PK_Recepcao
And tblWRITitulos.PK_SeqTitulo=A.PK_SeqTitulo
Inner Join tblWRIRecepcao
On tblWRIRecepcao.PK_FlagRecepcao=tblWRITitulos.FK_tblWRIRecepcaoFlagRecepcao
And tblWRIRecepcao.PK_Recepcao=tblWRITitulos.FK_tblWRIRecepcaoRecepcao
Where A.Alterar <> 0
And (tblWRITitulos.FK_tblWRIRecepcaoFlagRecepcao <> @PK_FlagRecepcao
Or tblWRITitulos.FK_tblWRIRecepcaoRecepcao <> @PK_Recepcao)
Select vw_Pessoas.PK_Pessoa,
vw_Pessoas.Nome,
vw_Pessoas.PessoaFull,
vw_Atos.PK_Ato,
vw_Atos.AtoFull As UltimoAto,
Case When A.PK_Recepcao Is Null Then ''
Else RTrim(tblWRITipoPrenotacao.TipoPrenotacao) + ' ' + Cast(A.PK_Recepcao As VarChar(8)) + '/' + Cast(A.PK_SeqTitulo As VarChar(3)) + ' (' + Convert(VarChar(10),tblWRIRecepcao.DtRecep,103) + ')'
End As UltimaRecepcao,
A.PK_FlagRecepcao,
A.PK_Recepcao,
A.PK_SeqTitulo,
A.Alterar,
vw_Pessoas.PessoaEnderecoFull
From @Tabela A
Inner Join vw_Pessoas
On vw_Pessoas.PK_Pessoa = A.PK_Pessoa
Left Join vw_Atos
On vw_Atos.PK_Ato = A.PK_Ato
Left Join tblWRIRecepcao
On tblWRIRecepcao.PK_FlagRecepcao=A.PK_FlagRecepcao
And tblWRIRecepcao.PK_Recepcao=A.PK_Recepcao
Left Join tblWRITipoPrenotacao
On tblWRITipoPrenotacao.PK_Id=tblWRIRecepcao.TipoPrenotacao
Order By
vw_Pessoas.Nome,
vw_Pessoas.PessoaFullDocumento,
vw_Atos.PK_Ato
/*
Select Max(PK_Id),
Nome,
Count(*)
From tblWRIPessoas
Group By
Nome
Having Count(*)>4
Order By
Nome
*/
Sair:
End
-
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 14 de setembro de 2013 16:52
-
Muito obrigado pela ajuda,
Tentei rodar mas deu erro no from
from @Tabela A
Msg 156, Level 15, State 1, Line 13
Incorrect syntax near the keyword 'from'.Quanto ao null, sim voce tem razão na aplicação fica em branco,
O que eu preciso com isso é listar todos os nomes que estao em branco ou seja nao tem atos nem recepcao, e estao sem referencia no banco.
-
Felipe,
Verifique que deve existir no exemplo do José uma vírgula declarada antes do From.
End as UltimaRecepcao, ... from @Tabela A
Remova vírgula.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-
-
-