ورود

View Full Version : مقاله: عمل نکردن دستور insert در هنگام استفاده از select



DotNet_King
دوشنبه 14 مرداد 1387, 18:45 عصر
با سلام
برای insert کردن یه سری مقادیر تو بانک کد زیر رو نوشتم ولی وقتی که به جای مقدار سوم دستور select رو قرار می دهم این ارور رو می گیره
وقتی که برای هر مقدار یه عدد پیش فرض می زارم جواب می ده . دستور سلکت هم یه عدد خروجی می دهد



Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near ')'.





create table #stLesson
(
stID int,
LessID int,
LessUnit int
)


Declare @StID int,@lessID int,@unit int,@txt varchar(100)
set @lessID=12002
set @stID=12002

select @unit
INSERTINTO #stLesson values(@stID,@lessID,select [dbo].[tblLessID].[lessUnit] from [dbo].[tblLessID] where [dbo].[tblLessID].[LessID] = @LessID)
-- @StID , @lessID , 10)

AminSobati
دوشنبه 14 مرداد 1387, 22:06 عصر
سلام دوست عزیزم،
select رو در Values نمیتونین استفاده کنین. یا مقدار select رو قبلش در یک متغیر بریزین و بعد در Values قید کنین، یا کلا Values رو بزارین کنار و stid و lessid رو در select بیارین

DotNet_King
دوشنبه 14 مرداد 1387, 23:43 عصر
با سلام و خسته نباشید
آقا امین از اطلاعات خوبی که در این زمینه دادید ممنونم. من چون حدس می زدم که شاید این قابلیت رو ندارم طبق فرمایش شما رو قبلا عمل کردم ولی این ارور رو میده . اگه میشه نظرتون رو راجع به این ارور بفرمایید. این در صورتیه که سلکت تنهایی جواب میده ولی اینجا تو متغییر نمی ریزدش





Declare @StID int,@lessID int,@unit int,@txt varchar(100)
set @lessID=12002
set @stID=12002
set @unit = select [dbo].[tblLessID].[lessUnit] from [dbo].[tblLessID] where [dbo].[tblLessID].[LessID] = @LessID



متن ارور




Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'select'.





موفق باشید

رضا جاسبی
سه شنبه 15 مرداد 1387, 00:20 صبح
دوست عزیز شما در زمان اجرا مطمئن هستید که جوابتون فقط یک سطر خواهد بود. اما SQL نمیتونه مطمئن باشه. باید یه جوری مطمئنش کنی مثلا بعد از Select بنویسی Top 1 ID و یا (Max(ID.
در ضمن کل عبارت Select رو در پرانتز بذار



Declare @Val int
Set @Val = (Select Top 1 ID from TableName)
print @Val
Insert Into TableName Values (@Val,'NewItem')



جوابش هم شد :


4

(1 row(s) affected)