tag:blogger.com,1999:blog-8237744171093610439.post9087281849701464424..comments2024-03-22T22:10:35.164-07:00Comments on Blog en español de software y tecnología: Foros en Español para tener ayuda de expertos en SQL Serverdcalbimontehttp://www.blogger.com/profile/10760528068258348274noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-8237744171093610439.post-40680332780708838762019-06-11T15:19:05.621-07:002019-06-11T15:19:05.621-07:00Buenas Tardes
Presento la siguiente situación. El...Buenas Tardes<br /><br />Presento la siguiente situación. El Triggers en la actualidad funciona pero deseo agregarle la funcionalidad de que me me refleja el mensaje '@?@1#USR_DISOPD# ya que la cantidad de items no puede ser mayor a 3#' pero que solo lo refleja si están llenos los 3 renglones de lo contrario no dejar de cargar algún dato. Es decir si deseo caragar 1 o 2 renglones no me debería permitir. Anexo Query<br /><br />USE [GEORGE]<br />GO<br />/****** Object: Trigger [dbo].[InsUSR_DISOPD] Script Date: 06/11/2019 17:36:24 ******/<br />SET ANSI_NULLS ON<br />GO<br />SET QUOTED_IDENTIFIER ON<br />GO<br /><br />/****** CWA Object: Insert trigger for table USR_DISOPD - Script Date: 12/12/17 11:24:19 ******/<br />ALTER TRIGGER [dbo].[InsUSR_DISOPD] ON [dbo].[USR_DISOPD]<br />FOR INSERT <br />AS <br />Begin<br />/* BEGIN CWA SECTION - DO NOT TOUCH */<br />Declare<br />@numrows int, <br />@numnull int, <br />@PKValues varchar(255), <br />@FKFields varchar(255), <br />@USR_DISOPD_PERIOD numeric(6,0) , <br />@USR_DISOPD_CODREG varchar(6) , <br />@USR_DISOPD_NUMDIA smallint , <br />@cwaerrmsg varchar(255), <br />@cwaerr int<br /><br />Select @numrows=@@rowcount<br />if @numrows=0<br />return<br /><br /><br />Select @cwaerr=0<br />if update(USR_DISOPD_PERIOD) Or <br />update(USR_DISOPD_CODREG) <br />begin<br />if (Select count(*)<br />From USR_DISOPI,inserted<br />Where (USR_DISOPI.USR_DISOPI_PERIOD =inserted.USR_DISOPD_PERIOD) and <br />(USR_DISOPI.USR_DISOPI_CODREG =inserted.USR_DISOPD_CODREG) ) != @numrows<br />begin<br />Select @cwaerr=1<br />Declare cur Insensitive Cursor<br />for Select inserted.USR_DISOPD_PERIOD, inserted.USR_DISOPD_CODREG, inserted.USR_DISOPD_NUMDIA<br />from inserted<br />where not exists (Select * From USR_DISOPI where (USR_DISOPI.USR_DISOPI_PERIOD =inserted.USR_DISOPD_PERIOD) and <br />(USR_DISOPI.USR_DISOPI_CODREG =inserted.USR_DISOPD_CODREG) )<br />for Read Only<br />Open cur<br />fetch next from cur into @USR_DISOPD_PERIOD, @USR_DISOPD_CODREG, @USR_DISOPD_NUMDIA<br />if @@fetch_status=0<br />begin<br />Select @PKValues = convert(varchar(255),@USR_DISOPD_PERIOD) + ',' +convert(varchar(255),@USR_DISOPD_CODREG) + ',' +convert(varchar(255),@USR_DISOPD_NUMDIA) <br />Select @cwaerrmsg='@?@1#USR_DISOPD#' + @PKValues + '#USR_DISOPD_PERIOD, USR_DISOPD_CODREG#'<br />Raiserror(@cwaerrmsg, 16,-1)<br />fetch next from cur into @USR_DISOPD_PERIOD, @USR_DISOPD_CODREG, @USR_DISOPD_NUMDIA<br />end<br />Deallocate cur<br />end<br />end<br /><br />if @cwaerr=1 <br />Rollback Transaction<br /><br />/* END CWA SECTION */<br /><br />/* BEGIN Usuario TRIGGER SECTION */<br />UPDATE B<br />SET B.USR_DISOPD_SALDIA = B.USR_DISOPD_IMPDIA<br />FROM USR_DISOPI,INSERTED A,USR_DISOPD B<br />WHERE USR_DISOPI_PERIOD = B.USR_DISOPD_PERIOD<br />AND USR_DISOPI_CODREG = B.USR_DISOPD_CODREG<br />AND USR_DISOPI_PERIOD = A.USR_DISOPD_PERIOD<br />AND USR_DISOPI_CODREG = A.USR_DISOPD_CODREG<br />AND B.USR_DISOPD_NUMDIA = A.USR_DISOPD_NUMDIA<br /><br />DECLARE @PERIOD AS VARCHAR(6),<br />@CODREG AS VARCHAR(15),<br />@IMPTOT AS NUMERIC(18,2),<br />@NROITM AS INT,<br />@SALDIF AS NUMERIC(18,2),<br />@IMPDIA AS NUMERIC(18,2)<br /><br />SELECT @PERIOD = USR_DISOPD_PERIOD,<br />@CODREG = USR_DISOPD_CODREG,<br />@NROITM = USR_DISOPD_NROITM<br />FROM INSERTED<br /><br /><br /><br /><br />SELECT @IMPTOT = SUM(USR_DISOPD_IMPDIA)<br />FROM USR_DISOPD<br />WHERE USR_DISOPD_PERIOD = @PERIOD <br />AND USR_DISOPD_CODREG = @CODREG<br />AND @NROITM = 3<br /><br />SELECT @SALDIF = USR_DISOPI_IMPDIF<br />FROM USR_DISOPI<br />WHERE USR_DISOPI_PERIOD = @PERIOD<br />AND USR_DISOPI_CODREG = @CODREG<br /><br />SELECT @IMPDIA = SUM(USR_DISOPD_IMPDIA)<br />FROM INSERTED<br />WHERE USR_DISOPD_PERIOD = @PERIOD <br />AND USR_DISOPD_CODREG = @CODREG<br /><br />IF (@IMPTOT <> @SALDIF AND @NROITM = 3) <br />BEGIN<br />SET @cwaerrmsg = '@?@1#USR_DISOPD# ya que el importe debe ser igual al total diferido #'<br />SET @CWAERR = 1<br />RAISERROR (@cwaerrmsg,16,- 1)<br />END <br /><br />IF @NROITM > 3 <br />BEGIN<br />SET @cwaerrmsg = '@?@1#USR_DISOPD# ya que la cantidad de items no puede ser mayor a 3#'<br />SET @CWAERR = 1<br />RAISERROR (@cwaerrmsg,16,- 1)<br />END<br /><br /><br />IF @CWAERR = 1 <br />ROLLBACK TRANSACTION<br />/* END Usuario TRIGGER SECTION */<br /><br />end<br />Anonymoushttps://www.blogger.com/profile/06828021255278351528noreply@blogger.comtag:blogger.com,1999:blog-8237744171093610439.post-89600035914201377672019-05-24T10:07:53.213-07:002019-05-24T10:07:53.213-07:00Buenas, como hago una lectura de usuario desde un ...Buenas, como hago una lectura de usuario desde un procedimiento en de base de datosAnonymoushttps://www.blogger.com/profile/06801451207804736627noreply@blogger.comtag:blogger.com,1999:blog-8237744171093610439.post-43498381013792399662013-08-23T20:18:09.802-07:002013-08-23T20:18:09.802-07:00Obregón,
Busca en google stored procedure out par...Obregón,<br /><br />Busca en google stored procedure out parameter.<br />Son ejemplos de procedimientos almacenados que contienen parámetros de salida.dcalbimontehttps://www.blogger.com/profile/10760528068258348274noreply@blogger.comtag:blogger.com,1999:blog-8237744171093610439.post-64434578519786250342013-08-23T20:17:08.136-07:002013-08-23T20:17:08.136-07:00Elvis, ese es el comportamiento normal. No se acep...Elvis, ese es el comportamiento normal. No se aceptan números en bases de datos.dcalbimontehttps://www.blogger.com/profile/10760528068258348274noreply@blogger.comtag:blogger.com,1999:blog-8237744171093610439.post-42111984227125291672012-09-26T17:07:29.964-07:002012-09-26T17:07:29.964-07:00Hola quiero hacer una consulta a una determinada t...Hola quiero hacer una consulta a una determinada tabla, el resultado que me arroje debería pasarlo a un parámetro para que ese parámetro consulte a otras tablas de otra base de datos.<br />Espero que me puedan ayudar.ESPECIALISTA EN SISTEMAS DE INFORMACIÓN GEOGRAFICAhttps://www.blogger.com/profile/04557929083591191149noreply@blogger.com