البرمجة

استخراج أطوال أعمدة SQL Server باستخدام مجموعة متغيرة

To achieve your goal of getting the maximum length of multiple columns dynamically using an array, you can modify your stored procedure to accept a comma-separated list of column names. Here’s an updated version of your stored procedure:

sql
ALTER PROCEDURE [dbo].[sp_getColumnLength] @colvals nvarchar(max), @tblval nvarchar(50) AS BEGIN DECLARE @sql nvarchar(max); SET @sql = 'SELECT column_name, character_maximum_length as MaxLength FROM information_schema.columns WHERE table_name = ''' + @tblval + ''' AND column_name IN (' + @colvals + ')'; EXEC sp_executesql @sql; END GO

In this updated procedure, @colvals is a comma-separated list of column names (e.g., ‘Surname, FirstName’). The procedure dynamically constructs a SQL query to select the column names and their maximum lengths from the information_schema.columns view for the specified table.

To call this stored procedure and get the maximum lengths for ‘Surname’ and ‘FirstName’, you can use the following code:

sql
EXEC [dbo].[sp_getColumnLength] @colvals = 'Surname, FirstName', @tblval = 'YourTableName';

Replace ‘YourTableName’ with the actual name of your table. This procedure will return the maximum lengths for the specified columns in the result set.

المزيد من المعلومات

لديك الآن إجراء مخزن يمكنه استقبال قائمة من أسماء الأعمدة واستعراض أطوالها القصوى بشكل ديناميكي. يمكنك تحسين هذا الإجراء المخزن لتشمل مزيد من المعلومات، مثل تضمين اسم الجدول وترتيب النتائج. إليك نسخة محدثة من الإجراء المخزن:

sql
ALTER PROCEDURE [dbo].[sp_getColumnLength] @colvals nvarchar(max), @tblval nvarchar(50) AS BEGIN DECLARE @sql nvarchar(max); SET @sql = 'SELECT table_name as TableName, column_name as ColumnName, character_maximum_length as MaxLength FROM information_schema.columns WHERE table_name = ''' + @tblval + ''' AND column_name IN (' + @colvals + ') ORDER BY column_name'; EXEC sp_executesql @sql; END GO

في هذا الإجراء المحدث، يتم إضافة اسم الجدول إلى النتائج المسترجعة. كما تم تحديد ترتيب النتائج حسب اسم العمود. تذكر أنه يجب تحديد اسم الجدول بشكل صحيح عند استدعاء الإجراء المخزن.

للاستدعاء، يمكنك استخدام الأمر التالي:

sql
EXEC [dbo].[sp_getColumnLength] @colvals = 'Surname, FirstName', @tblval = 'YourTableName';

هذا سيسترد قائمة تحتوي على اسم الجدول، اسم العمود، وأقصى طول للقيم في العمود لكل من ‘Surname’ و ‘FirstName’ في الجدول الذي تحدده في متغير @tblval.

زر الذهاب إلى الأعلى