ورود

View Full Version : بررسی عملکرد IF , ELSE



مهدی هادیان2
چهارشنبه 05 تیر 1392, 14:37 عصر
بسم الله الرحمن الرحیم
با سلام
لطفا کوئری زیر رو اجرا کنید:
DECLARE @MoreColumns bit; SET @MoreColumns = 1 IF @MoreColumns = 1 CREATE TABLE #Table (id int PRIMARY key, name varchar(50), Description varchar(8000), USER nvarchar(2000) ) ELSE CREATE TABLE #Table (id int, name varchar(50) ) DROP TABLE #TableA

دو تا خطا به شکل زیر میده:
Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'USER'.
Msg 2714, Level 16, State 1, Line 9
There is already an object named '#Table' in the database.
میشه دلیلش رو بفرمائید.
با سپاس

hamid_hr
چهارشنبه 05 تیر 1392, 16:09 عصر
برا USER اينطوري درست ميشه [USER]

hossein_h62
چهارشنبه 05 تیر 1392, 16:11 عصر
سلام
خطای اول برای اینه که نام فیلدتون Keyword هست و باید تغییرش بدین، خطای دوم هم با تغییر نام جدول در یکی از قسمتهای IF یا ELSE رفع میشه :
DECLARE @MoreColumns bit
SET @MoreColumns = 1;
IF @MoreColumns = 1
begin
CREATE TABLE #MyTable (id int PRIMARY key, name varchar(50), Description varchar(8000), USERS nvarchar(2000) );
select * from #MyTable
End;
ELSE
begin
CREATE TABLE #MyTable1 (id int, name varchar(50) );
select * from #MyTable1
End

مهدی هادیان2
پنج شنبه 06 تیر 1392, 04:01 صبح
بسم الله الرحمن الرحیم
با سلام خدمت دوستان
منظورم رو بهتر عرض میکنم؛ قصد درست کردن کوئری مذکور رو ندارم؛ تنها میخوام نحوه عملکردش رو بررسی کنم.
خطای اول همون طور که دوستان فرمودند به خاطر کلمه کلیدی USER می باشد. با دومی مشکل دارم. همون طور که مشاهده میکنید @MoreColumns = 1 است، بنابراین بایستی دستور IF اجرا بشه در دستور IF درصدد ایجاد جدولی به نام
#MyTable است که با خطا مواجه میشود. حالا سوال از اینجا شروع میشود.گویا داره دستور ELSE ایجاد میشود که خطایی مبنی براینکه جدول
#MyTable وجود دارد میدهد.چرا؟
با سپاس