PDA

View Full Version : پر کردن تمام فیلد های Null



mojtaba_e
چهارشنبه 29 اردیبهشت 1389, 17:44 عصر
سلام و خدا قوت خدمت عزیزان
می خواستم بدونم چه جوری میشه یک SP داشت که اسم یک بانک اطلاعاتی رو بگیره و بعد تمام جداول اون رو پیمایش کنه و بعد هر فیلدی که Null بود اون فیلد رو برابر با یک مقداری مثلا نوع فیلد قرار بده:متفکر:

حسین شهریاری
چهارشنبه 29 اردیبهشت 1389, 18:03 عصر
طریقه کدنویسی بصورت زیر هست.ولی یادم هست یکی دو روز پیش خود آقای ثباتی توی یکی از تاپیکها فرموده بودند" نام جدول و نام پایگاه اده نمیتونن پارامتریک باشن".


Update YourTable set YourField=Value
where YourField is Null

این هم لینکش:

http://www.barnamenevis.org/forum/showthread.php?t=221005

محمد سلیم آبادی
چهارشنبه 29 اردیبهشت 1389, 19:29 عصر
سلام و خدا قوت خدمت عزیزان
می خواستم بدونم چه جوری میشه یک SP داشت که اسم یک بانک اطلاعاتی رو بگیره و بعد تمام جداول اون رو پیمایش کنه و بعد هر فیلدی که Null بود اون فیلد رو برابر با یک مقداری مثلا نوع فیلد قرار بده:متفکر:
این مقاله را بخوانید و با کمی تغییر مشکلات حل می شود:
http://www.30sharp.com/ShowArticle.aspx?nid=13&did=201&AuthorID=11

mojtaba_e
چهارشنبه 29 اردیبهشت 1389, 21:34 عصر
خیلی ممنون آقای msalim بابت مقاله بسیار خوبتون
ولی من نتونستم این SP رو با توجه به این مقاله درست کنم:ناراحت:
میشه شما بیشتر راهنمایی کنید یا اگر سورس شو برام بزارین که ، یک دنیا ممنون میشم:چشمک:

محمد سلیم آبادی
چهارشنبه 29 اردیبهشت 1389, 23:45 عصر
این SP که در ادامه قرار دادم، دارای یک پارامتر ورودی هست که نام بانکتان را باید بهش ارسال کنید. سپس هر ستونی که دارای قید Default و مقدار NULL هست به مقدار پیشفرضش Update میشود:


CREATE PROC test1 (@database_name VARCHAR(50)) AS
BEGIN
DECLARE @s1 VARCHAR(MAX)
DECLARE @s2 TABLE(i VARCHAR(MAX));

SET @s1 = ''

SELECT @s1 =
'USE '+ @database_name+' SELECT ''UPDATE '' + ' + QUOTENAME(@database_name, '''') + ' + ''..['' + table_name + '']'' +
'' SET '' + ''['' + column_name + '']'' + '' = '' + column_default +
'' WHERE '' + ''['' + column_name + ''] IS NULL'' + '';''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_default IS NOT NULL
AND OBJECTPROPERTY(OBJECT_ID(table_name),''istable'') = 1; '

INSERT @s2
EXECUTE(@s1);

SET @s1 = '';
SELECT @s1 = @s1 + i
FROM @s2;

EXECUTE(@s1);
END
GO

hamid_massaelly
پنج شنبه 30 اردیبهشت 1389, 08:34 صبح
حال چرا می خواهی sp باشه query آن که سادست؟