Mostrando entradas con la etiqueta tabla. Mostrar todas las entradas
Mostrando entradas con la etiqueta tabla. Mostrar todas las entradas

miércoles, 23 de agosto de 2017

SQL - Insertar columna en tabla.-

USE leaseoper
GO

SELECT * FROM  leaseoper..t_correccion_estado_pago


/* Para evitar posibles problemas de pérdida de datos, debe revisar este script detalladamente antes de ejecutarlo fuera del contexto del diseñador de base de datos.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_t_correccion_estado_pago
                (
                periodo int NOT NULL,
                fecha_proceso smalldatetime NOT NULL,
                operacion numeric(20, 0) NOT NULL,
                origen_docto tinyint NULL, --CAMPO NUEVO
                id_documento int NOT NULL,
                fecha_compra smalldatetime NULL,
                factor_rev float(53) NOT NULL,
                monto_total_documento float(53) NOT NULL,
                mto_reval_ejercicio float(53) NULL,
                mto_reval_total float(53) NULL,
                fecha_ingreso datetime NULL,
                estado tinyint NULL
                )  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_t_correccion_estado_pago SET (LOCK_ESCALATION = TABLE)
GO
GRANT DELETE ON dbo.Tmp_t_correccion_estado_pago TO Usuarios  AS dbo
GO
GRANT INSERT ON dbo.Tmp_t_correccion_estado_pago TO Usuarios  AS dbo
GO
GRANT SELECT ON dbo.Tmp_t_correccion_estado_pago TO Usuarios  AS dbo
GO
GRANT UPDATE ON dbo.Tmp_t_correccion_estado_pago TO Usuarios  AS dbo
GO
IF EXISTS(SELECT * FROM dbo.t_correccion_estado_pago)
                EXEC('INSERT INTO dbo.Tmp_t_correccion_estado_pago (periodo, fecha_proceso, operacion, id_documento, fecha_compra, factor_rev, monto_total_documento, mto_reval_ejercicio, mto_reval_total, fecha_ingreso, estado)
                               SELECT periodo, fecha_proceso, operacion, id_documento, fecha_compra, factor_rev, monto_total_documento, mto_reval_ejercicio, mto_reval_total, fecha_ingreso, estado FROM dbo.t_correccion_estado_pago WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.t_correccion_estado_pago
GO
EXECUTE sp_rename N'dbo.Tmp_t_correccion_estado_pago', N't_correccion_estado_pago', 'OBJECT'
GO
ALTER TABLE dbo.t_correccion_estado_pago ADD CONSTRAINT
                pk_t_correccion_estado_pago PRIMARY KEY CLUSTERED
                (
                periodo,
                id_documento
                ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO
COMMIT
--Compruebo el cambio
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[t_correccion_estado_pago]') AND type in (N'U'))
SELECT * FROM  leaseoper..t_correccion_estado_pago



jueves, 21 de enero de 2016

SQL - Tabla Type

*Para enviar un DataTable desde el APP a SQL y tratarlo directamente.

/****************************CREA TABLA TYPE******************************/

USE miBD

CREATE TYPE [dbo].CargaMITABLAValidaType AS TABLE(
    [periodo] [int]  NULL,
[tipo_registro] [int]  NULL,
[fecha_proceso] [smalldatetime] NOT NULL
)

/**************************FIN CREA TABLA TYPE******************************/


/*************************SP QUE USA TABLA TYPE*************************/


/****** Object:  StoredProcedure [dbo].[pa_lo_valida_edicion_c13]    Script Date: 01/20/2016 18:39:43 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

/* =============================================
-- Author: JC
-- Create date: 20-01-2016
-- Description: Valida que los campos ingresados en informe

declare @cod_error INT
declare @desc_error varchar(500)
declare @miTabla CargaMITABLAValidaType
insert into @miTabla VALUES (201601,2,'20150102')
--select * FROM @miTabla
exec pa_lo_valida_edicion @miTabla , @cod_error OUTPUT, @desc_error OUTPUT
--select @cod_error, @desc_error


-- =============================================
*/
CREATE PROCEDURE [dbo].[pa_lo_valida_edicion]
@miTabla AS CargaMITABLAValidaType  READONLY ,
@cod_error INT OUTPUT ,
@desc_error VARCHAR(500) OUTPUT
AS
BEGIN
--variables de recorido
DECLARE @periodo [int] ,
@tipo_registro [int] ,
@fecha_proceso [smalldatetime]


--tabla de validaciones
CREATE TABLE #validaciones
(
 [periodo] [int] NOT NULL ,
 [tipo_registro] [int] NOT NULL ,
 [fecha_proceso] [smalldatetime] NOT NULL ,

)
--cursor de recorrido - VALIDACIONES
DECLARE c_valida CURSOR LOCAL
FOR
SELECT periodo ,
tipo_registro ,
fecha_proceso ,
FROM @miTabla

OPEN c_valida
FETCH c_valida INTO @periodo, @tipo_registro,@fecha_proceso
--
WHILE ( @@FETCH_STATUS = 0 )
BEGIN -- Inicio Ciclo

-- Seteo varaiables con valores OK
SELECT @cod_error = 0 ,
@desc_error = 'OK'
--Validaciones
IF ( @periodo <> '2016'
  )
BEGIN
SELECT @cod_error = 1 ,
@desc_error = 'Mensaje de Error Aquí'
END



-- fin ciclo
INSERT INTO #validaciones
VALUES ( @periodo, @tipo_registro, @fecha_proceso,
@cod_error,
 @desc_error )


FETCH c_valida INTO @periodo, @tipo_registro,
@fecha_proceso
END
CLOSE c_valida
DEALLOCATE c_valida


SELECT error,desc_error FROM #validaciones

END

GO





/*************************FIN SP QUE USA TABLA TYPE*************************/


/*************************DAC llamada desde .NET C#*************************/

public DataTable ValidaEdicionC13(DataTable dt)
        {
            Database db = DatabaseFactory.CreateDatabase("LeaseOper"); //enterprise library 5.0
            var ds = new DataSet();
            var retorno = false;
            var dataTable = new DataTable();
            try
            {
                using (var cnxx = new SqlConnection(db.ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("pa_lo_valida_edicion", cnxx);
                    cmd.CommandType = CommandType.StoredProcedure;

                    SqlParameter tvparam = cmd.Parameters.AddWithValue("@miTabla", dt);

                    tvparam.SqlDbType = SqlDbType.Structured;
               
                    db.AddOutParameter(cmd, "@cod_error", DbType.Int32, int.MaxValue);
                    db.AddOutParameter(cmd, "@desc_error", DbType.String, int.MaxValue);

                    cmd.Connection.Open();
                    SqlDataAdapter theDataAdapter = new SqlDataAdapter(cmd);

                    //los rescato pero no los estoy usando
                    var codError = db.GetParameterValue(cmd, "@cod_error");
                    var desError = db.GetParameterValue(cmd, "@desc_error");

                    theDataAdapter.Fill(ds);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            if (ds.Tables[0].Rows.Count > 0)
                return ds.Tables[0];
            return dataTable;
        }

/*************************.CS llamada desde .NET C# con JQUERY*************************/
 [WebMethod]
        public static string GeneraCuponera(object rows, string idDoc)
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("operacion", typeof(decimal));
                dt.Columns.Add("cod_material", typeof(int));

                string json = new JavaScriptSerializer().Serialize(rows);
                dynamic selectedRows = JsonConvert.DeserializeObject(json);

                foreach (dynamic rowGrid in selectedRows)
                {
                    DataRow rowDt = dt.NewRow();
                    rowDt["operacion"] = Convert.ToDecimal(rowGrid.operacion);
                    rowDt["cod_material"] = Convert.ToDecimal(rowGrid.cod_material);

                    dt.Rows.Add(rowDt);

                }
                var retorno = new BcCuponeras().GeneraCuponera(dt);
                return JsonConvert.SerializeObject(retorno);
            }
            catch (Exception ex)
            {
                var err = JsonConvert.SerializeObject(ex.Message);
                return err;
            }

        }