استخراج أطوال أعمدة 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:
sqlALTER 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.
-
حل مشكلة حلقة SQL Server التي لا تنتهي07/03/2024
-
حلول Regex لاستخراج محتوى عناوين HTML بدقة26/02/2024
To call this stored procedure and get the maximum lengths for ‘Surname’ and ‘FirstName’, you can use the following code:
sqlEXEC [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.
المزيد من المعلومات
لديك الآن إجراء مخزن يمكنه استقبال قائمة من أسماء الأعمدة واستعراض أطوالها القصوى بشكل ديناميكي. يمكنك تحسين هذا الإجراء المخزن لتشمل مزيد من المعلومات، مثل تضمين اسم الجدول وترتيب النتائج. إليك نسخة محدثة من الإجراء المخزن:
sqlALTER 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
في هذا الإجراء المحدث، يتم إضافة اسم الجدول إلى النتائج المسترجعة. كما تم تحديد ترتيب النتائج حسب اسم العمود. تذكر أنه يجب تحديد اسم الجدول بشكل صحيح عند استدعاء الإجراء المخزن.
للاستدعاء، يمكنك استخدام الأمر التالي:
sqlEXEC [dbo].[sp_getColumnLength] @colvals = 'Surname, FirstName', @tblval = 'YourTableName';
هذا سيسترد قائمة تحتوي على اسم الجدول، اسم العمود، وأقصى طول للقيم في العمود لكل من ‘Surname’ و ‘FirstName’ في الجدول الذي تحدده في متغير @tblval
.