Como obtener un valor de un registro en T-SQL de SQL Server

publicado por: Anonymous

Tengo el siguiente codigo

USE [database]
GO
/****** Object:  StoredProcedure [dbo].[spPacienteEnCola]    Script Date: 02/23/2017 08:31:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spPacienteEnCola]
    @tabla varchar(20) = '',
    @donde varchar(50) = '',
    @funcion int = 0

AS
begin
    declare @VConsulta varchar(max) = ''
    declare @msg varchar(max) = ''

    if @funcion = 0
        begin
            set @msg = N'No has enviado el valor de @funcion'
            print @msg
        end

    if @funcion = 1
        begin
            set @VConsulta = 'select * from ' + @tabla + ' where ' + @donde
            exec(@vConsulta)
        end


end

En la funcion 1, que hace el select, necesito obtener el valor de la columna Hora y compararlo con la hora actual, pero no encuentro la manera de sacar el valor del registro ya que el procedimiento me envia el datatable completo, o el registro completo. Ayuda.

Aun poniendo select hora, esta bien, me devuelve la hora, pero no como un dato, sino como un datatable. Lo que quiero es poder tener ese datos y asignarlo a una variable con set @hora = Hora_de_registro_en_bd

solución

Algo así te servirá?

ALTER PROCEDURE [dbo].[spPacienteEnCola] 
@tabla varchar(50) = '',
@donde varchar(50) = '',
@funcion int = 0
AS
begin
    create table #temp (hora varchar(30))
    declare @VConsulta varchar(max) = ''
    declare @msg varchar(max) = ''
    declare @hora VARCHAR(MAX)
    declare @sql varchar(100)
    select @sql = 'insert into #temp select top 1 
    CONVERT(VARCHAR(8),hora,108) from '[email protected]+' where '[email protected]+''
    exec (@sql)
if @funcion = 0
    begin
        set @msg = N'No has enviado el valor de @funcion'
        print @msg
    end

if @funcion = 1
    begin
        set @hora = (select hora from #temp)
        set @VConsulta = 'select * from ' + @tabla + ' where ' + @donde
        select @hora
        drop table #temp
    end
end
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *