PDA

View Full Version : کمک در مورد کار با این کلمه with CTE



oliya24
دوشنبه 24 مرداد 1390, 23:36 عصر
سلام دوستان کسی میتونه بگه این کلمه چیه و کارش چیه و در چه مواقعی میشه ازش استفاده کرد؟؟

Galawij
سه شنبه 25 مرداد 1390, 08:41 صبح
Common Table Expressions یا CTE یک ویژگی جدید از SQL هست که در ورژن 2005 به آن اضافه شده. در داخل Query ها تون می تونید از طریق این دستور یک مجموعه از نتایج موقتی را ایجاد و مانند یک Table یا View با آن رفتار کنید، و اطلاعات را از نتیجه خروجی آن بخوانید. مثال:
with MyCTE(x)
as
(select x='hello')
select x from MyCTE
از جمله قابلیتهای این دستور این هست که قابلیت بازگشتی دارد، یعنی می تواند دوباره خود را فراخوانی کند. مثال:
with MyCTE(x)
as
(
select x = convert(varchar(8000),'hello')
union all
select x + 'a' from MyCTE where len(x) < 100
)
select x from MyCTE
order by x
نکته: حداکثر دور بازگشتی که برای این دستور در نظر گرفته شده است، 100 دور می باشد.

araz_pashazadeh
یک شنبه 23 مهر 1391, 10:20 صبح
دوست عزیز می شود CTE تودرتو تعریف کرد؟
اگه شدنی لطفا یک نمونه کد یا مثال بزارید ممنون میشم.
من خیلی جستجو کردم ولی در این مورد به نتیجه نرسیدم!

oliya24
پنج شنبه 27 مهر 1391, 10:52 صبح
بله این قابلیت هم تعبیه شده به این طریق
;WITH CTE1 AS (SELECT 1 AS Col1),
CTE2 AS (SELECT COL1+1 AS Col2 FROM CTE1)
SELECT CTE1.Col1,CTE2.Col2
FROM CTE1
CROSS JOIN CTE2

araz_pashazadeh
پنج شنبه 27 مهر 1391, 13:02 عصر
بله این قابلیت هم تعبیه شده به این طریق
;WITH CTE1 AS (SELECT 1 AS Col1),
CTE2 AS (SELECT COL1+1 AS Col2 FROM CTE1)
SELECT CTE1.Col1,CTE2.Col2
FROM CTE1
CROSS JOIN CTE2

ولی این کدی که شما نوشتین تودرتو نیست!؟
منظور مثل SELECT تودرتو هستش من خودم یه نمونه مثال نوشتم ولی خطا می ده دلیلش را نمی دونم :


WITH



y AS (

WITH x AS (

SELECT 1 as n

)

SELECT*FROM x

)


SELECT



*FROM Y

tooraj_azizi_1035
جمعه 28 مهر 1391, 12:43 عصر
... و بیشتر:
http://www.farsimsdn.somee.com/default.aspx?id=48

elena
دوشنبه 11 آبان 1394, 22:59 عصر
Common Table Expressions یا CTE یک ویژگی جدید از SQL هست که در ورژن 2005 به آن اضافه شده. در داخل Query ها تون می تونید از طریق این دستور یک مجموعه از نتایج موقتی را ایجاد و مانند یک Table یا View با آن رفتار کنید، و اطلاعات را از نتیجه خروجی آن بخوانید. مثال:
with MyCTE(x)
as
(select x='hello')
select x from MyCTE
از جمله قابلیتهای این دستور این هست که قابلیت بازگشتی دارد، یعنی می تواند دوباره خود را فراخوانی کند. مثال:
with MyCTE(x)
as
(
select x = convert(varchar(8000),'hello')
union all
select x + 'a' from MyCTE where len(x) < 100
)
select x from MyCTE
order by x
نکته: حداکثر دور بازگشتی که برای این دستور در نظر گرفته شده است، 100 دور می باشد.میشه در مورد این کد بیشتر توضیح بدین،این دستور رو کجا باید بنویسیم و اجرا کنیم؟