Constancia

SQL_PROC_Tabla_ClasePropiedades_VB

Jun 1st, 2013
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.91 KB | None | 0 0
  1.     DROP PROCEDURE Tabla_Clase
  2.  
  3.  
  4. USE [BBDD]
  5. GO
  6.  
  7. --****** Object:  StoredProcedure [dbo].[Tabla_ClasePropiedades_VB]  
  8. SET ANSI_NULLS ON
  9. GO
  10.  
  11. SET QUOTED_IDENTIFIER ON
  12. GO
  13.  
  14. -- =============================================
  15. -- Author:      <Jorge Sánchez>
  16. -- Create date: <05/10/2013>
  17. -- Description: <Generación de Código Fuente de VB NET con las propiedades de una clase a partir de una tabla de SQL>
  18. -- =============================================
  19. CREATE PROCEDURE [dbo].[PROC_Tabla_ClasePropiedades_VB]
  20.     -- ***** PARAMETROS
  21.     @Tabla CHAR(50)
  22. AS
  23. BEGIN
  24.  
  25.  
  26. IF NOT EXISTS(SELECT name FROM sysobjects WHERE sysobjects.name = @Tabla)
  27. PRINT 'ERROR !!! LA TABLA : [' + LTRIM(RTRIM(@Tabla)) + '] NO EXISTE'
  28. RETURN -1
  29.  
  30.  
  31. DECLARE @IdCampo INT,@Campo CHAR(50),@Tipo CHAR(50),@Longitud INT --,@Permite_Nulo CHAR(10),@Tabla_Externa CHAR(50),
  32. DECLARE @Prefijo CHAR(1),@sTipo CHAR(10)
  33.  
  34. DECLARE Campos CURSOR
  35.     FOR SELECT DISTINCT
  36. syscolumns.colid AS IdCampo, syscolumns.name AS Campo, systypes.name AS Tipo,
  37. syscolumns.LENGTH AS Longitud
  38. FROM        
  39. sysobjects sysobjects_1 RIGHT OUTER JOIN
  40. sysforeignkeys ON sysobjects_1.id = sysforeignkeys.rkeyid RIGHT OUTER JOIN
  41. syscolumns INNER JOIN
  42. sysobjects ON syscolumns.id = sysobjects.id INNER JOIN
  43. systypes ON syscolumns.xtype = systypes.xtype ON sysforeignkeys.fkeyid = syscolumns.id AND
  44. sysforeignkeys.fkey = syscolumns.colid LEFT OUTER JOIN
  45. sysindexkeys ON sysobjects.id = sysindexkeys.id AND syscolumns.colid = sysindexkeys.colid
  46. WHERE  
  47. sysobjects.name = @Tabla AND systypes.name <> 'sysname'
  48. ORDER BY syscolumns.colid
  49.  
  50. OPEN Campos
  51.  
  52.  
  53.  
  54. FETCH NEXT FROM Campos
  55. INTO @IdCampo,@Campo,@Tipo,@Longitud;
  56.  
  57. WHILE @@FETCH_STATUS = 0
  58. BEGIN
  59. -- ****************************** PRINT DE LAS PROPIEDADES ****************************************
  60.  
  61. -- *********>> PREFIJO DE LA PROPIEDAD
  62. SELECT @Prefijo = 'x'
  63. SELECT @sTipo = 'xxxxx'
  64.  
  65. IF @Tipo = 'char' OR @Tipo = 'nchar' OR @Tipo = 'varchar' BEGIN SELECT @Prefijo = 's';SELECT @sTipo ='String' END
  66. IF @Tipo = 'int' OR @Tipo = 'Numeric' BEGIN SELECT @Prefijo = 'i';SELECT @sTipo ='Integer' END
  67. IF @Tipo = 'bit' BEGIN SELECT @Prefijo = 'b';SELECT @sTipo ='Boolean' END
  68. IF @Tipo = 'Date' OR @Tipo = 'Datetime' BEGIN SELECT @Prefijo = 'f';SELECT @sTipo ='Date' END
  69.  
  70. SELECT @Prefijo = '_'
  71.  
  72. -- ************** GENERAMOS LA PROPIEDAD
  73. PRINT 'Private '+ @Prefijo+LTRIM(RTRIM(@Campo)) + ' as ' + @sTipo
  74. PRINT 'Public Property ' + LTRIM(RTRIM(@Campo)) + '() As ' + @sTipo
  75. PRINT ' Get'
  76. PRINT '     Return '+ @Prefijo+LTRIM(RTRIM(@Campo))
  77. PRINT ' End Get'
  78. PRINT ' Set(ByVal value As ' + LTRIM(RTRIM(@sTipo)) + ')'
  79. PRINT '     '+ @Prefijo+LTRIM(RTRIM(@Campo)) + ' = value'
  80. PRINT ' End Set'
  81. PRINT 'End Property'
  82. PRINT ''
  83. PRINT ''
  84.  
  85.  
  86. -- *************************************************************************************************
  87.  
  88.  
  89. FETCH NEXT FROM Campos
  90. INTO @IdCampo,@Campo,@Tipo,@Longitud;
  91.  
  92. END
  93. CLOSE Campos;
  94. DEALLOCATE Campos;
  95.  
  96. END
  97.  
  98. GO
Advertisement
Add Comment
Please, Sign In to add comment