Login    
 
 
 
 
Text/HTML
  
You are here :: Blogs Saturday, May 19, 2012

Search
Note: This uses the internal blog search engine. The Google search engine is also available at the top of the page.
  
Disclaimer

Please review the site disclaimer before downloading or using content found on this site

  
Categories
  
DEVSHED Blog
As always, I welcome your comments!
Dec 10

Written by: Steve Gray
12/10/2010 12:37 PM  RssIcon

This procedure creates an update statement. Refer to the Data Access index for the documentation

Prerequisites:

f_4P_columnType

Code Snippet
  1. --updated 12/10/2010
  2.  
  3. IF EXISTS (SELECT name
  4.        FROM   sysobjects
  5.        WHERE  name = N'sp_update'
  6.        AND       type = 'P')
  7.     DROP PROCEDURE sp_update
  8. GO
  9.  
  10. CREATE PROCEDURE sp_update
  11. -- sp_update 'POP10300'
  12.  
  13. @tablename varchar(50)
  14.  
  15. AS
  16.  
  17. set nocount on
  18.     
  19. declare @vchrFieldName varchar(255),
  20.     @vchrFieldType varchar(50),
  21.     @vchrParamName varchar(255),
  22.     @vchrParamList varchar(8000),
  23.     @vchrProcName varchar(255),
  24.     @vchrSetList varchar(8000),
  25.     @vchrOrdinalPosition int,
  26.     @vchrAnd varchar(5),
  27.     @vchrWhere varchar(1000)
  28.  
  29.  
  30. select
  31.     @vchrAnd = '',
  32.     @vchrWhere = '',
  33.     @vchrParamList = '',
  34.     @vchrSetList = '',
  35.     @vchrProcName = 'FP_' + @tablename + '_UPD'
  36.  
  37.  
  38. print 'IF EXISTS (SELECT name '
  39. print '    FROM   sysobjects '
  40. print '    WHERE  name = N' + char(39) + @vchrProcName + char(39)
  41. print '        AND type = ' + char(39) + 'P' + char(39) + ')'
  42. print '    DROP PROCEDURE ' + @vchrProcName
  43. print 'GO'
  44. print ''
  45. print 'CREATE PROCEDURE ' + @vchrProcName
  46.  
  47. declare curFields CURSOR for
  48. select c.name,
  49.         dbo.f_4P_columnType (xusertype,length, xprec , xscale),
  50.         char(64) + c.name,
  51.         /* the ordinal position of the key fields */
  52.         k.ordinal_position
  53.     from sysobjects o
  54.         left join syscolumns c on c.id = o.id
  55.         left join INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS con
  56.             on con.table_name = o.name and con.constraint_type = 'PRIMARY KEY'
  57.         left JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K
  58.             on Con.TABLE_NAME = K.TABLE_NAME
  59.             AND Con.CONSTRAINT_NAME = K.CONSTRAINT_NAME and k.column_name = c.name
  60.     where o.name = @tablename
  61.         /* don't mess with timestamp columns */
  62.         and xusertype <> 189
  63.     order by c.colorder
  64.  
  65.  
  66.  
  67. OPEN curFields
  68. FETCH NEXT FROM curFields INTO @vchrFieldName, @vchrFieldType,
  69.     @vchrParamName, @vchrOrdinalPosition
  70. WHILE @@FETCH_STATUS = 0
  71. BEGIN
  72.     --build a where clause
  73.     if not @vchrOrdinalPosition is null begin
  74.         set @vchrWhere = @vchrWhere  + '        ' + @vchrAnd
  75.             + @vchrFieldName + ' = ' + @vchrParamName + char(13)
  76.         set @vchrAnd = 'and '
  77.     end
  78.  
  79.     --build a param list
  80.     set @vchrParamList = @vchrParamList + char(13)
  81.         + @vchrParamName + ' ' + @vchrFieldType + ','
  82.  
  83.     --build the 'set' list
  84.     set @vchrSetList = @vchrSetList + char(13)
  85.         + space(8) + @vchrFieldName + ' = ' + @vchrParamName + ','
  86.  
  87.     FETCH NEXT FROM curFields INTO @vchrFieldName,
  88.         @vchrFieldType,@vchrParamName, @vchrOrdinalPosition
  89. END
  90. CLOSE curFields
  91. DEALLOCATE curFields
  92.  
  93. --remove the first and last char from the list
  94. set @vchrSetList = stuff(@vchrSetList,1,1,'')
  95. set @vchrSetList = left(@vchrSetList, len(@vchrSetList)-1)
  96.  
  97. --remove the last char from the list
  98. set @vchrParamList = left(@vchrParamList, len(@vchrParamList)-1)
  99.  
  100.  
  101. print @vchrParamList
  102. print ''
  103. print 'AS'
  104. print ''
  105. print 'UPDATE ' + @tablename + ' SET'
  106. print @vchrSetList
  107.  
  108. PRINT '    WHERE '
  109. print @vchrWhere
  110.  
  111. go
  112.  
  113. grant exec on sp_update to public

Tags:
Categories:
Location: Blogs Parent Separator DEVSHED Blogs Child Separator SQL
As always, I welcome your comments!
  
 
 
Home | Products | Blogs | Contact Us | Links | God's Plan
Privacy Statement | Terms Of Use
 
Copyright 2011 by Devshed.us