PDA

View Full Version : سوال: مشکل با with



Sk1900n3
شنبه 29 آبان 1389, 16:39 عصر
سلام به دوستان
من یک with توی یک function نوشتم . درست کار میکنه.
ولی توی تابع پیغام خطا میده. فکر کنم مشکل از استفادش باشه


With tb_With as
(select id,nm from tb1)

Declare cur CURSOR FOR
(select nm from
tb2 inner join tb_With
on tb2.id=tb_With.id)



خطا


Msg 156, Level 15, State 1, Procedure fn_lstUnder, Line 11
Incorrect syntax near the keyword 'Declare'.


دوما ایا میشه چند with پشت سرهم ایجاد کرد(امتحان کردم نشد:خجالت:)
ممنون

حمیدرضاصادقیان
شنبه 29 آبان 1389, 17:04 عصر
خوب شما میتونید با استفاده از With یک کوئری تودرتو اجرا کنید و نیازی به کرسر نیست.
چرا اینکارو نمیکنید؟ به صورت recursive with ازش استفاده کنید.

Sk1900n3
شنبه 29 آبان 1389, 17:15 عصر
با سلام خدمت اقای صادقیان.
من curcor رو توی تابعی که نوشتم احتیاج دارم

اگه بشه از recursive with یه مثال بزنید ممنون میشم

اگه نشه با With بنویسم مجبورم واسه اینکار یه View ایجاد کنم
اگه میشه راهنماییم کنید
ممنون

حمیدرضاصادقیان
شنبه 29 آبان 1389, 17:23 عصر
این لینکها رو ببینید

لینک 1 (http://msdn.microsoft.com/en-us/library/ms186243.aspx)
لینک 2 (http://blog.sqlauthority.com/2008/07/28/sql-server-simple-example-of-recursive-cte/)
لینک 3 (http://www.sqlservercentral.com/articles/Development/recursivequeriesinsqlserver2005/1760/)

علیرضا مداح
شنبه 29 آبان 1389, 18:09 عصر
سلام،
طبیعی هست که کد شما خطا بدهد، به دلیل اینکه ساختار CTE شما کامل نیست، هر دستور CTE "باید" به "یکی" از دستورات SELECT, INSERT, UPDATE, DELETE,MERGE که در آن، همه یا بخشی از Column های CTE استفاده شده باشد، ختم گردد، اطلاعات بیشتر (http://msdn.microsoft.com/en-us/library/ms175972.aspx)
،/