# پایگاه‌های داده > SQL Server >  مقایسه کویری اکسس با اس کیو ال

## ali_bagheri34

سلام دوستان 
من یادمه که توی اکسس در کویری آن می توانستیم یک شرط متغیر بگزاریم یعنی در شرط این گونه بنویسیم 
[کد پرسنلی خود را وارد کنید]   وقتی اجرا می کردیم از کاربر سوال می کرد 

حال با اس کیو ال اگر بخواهیم از این روش استفاده کنیم چه باید کرد  من در اس کیو ال در قسمت وییو توانسته ام شرط ثابت بگذارم ---

-- یک مثال واقعی  در سیستم حسابداری سال مالی را با یک وییو بصورت استاتیک ساخته ام و این وییو پایه ای برای برنامه بوده و با بیشتر جداول همیشه جوین بوده و حال مشکل این است که در هر سال من باید یک وییو جدید مربوط به همان سال را بسازم می خواهم این کار را انجام ندهم و از داخل برنامه شرط را برای اس کیو ال پست کنم 

لطفا راهنمایی کنید

----------


## Amir_Safideh

View ها قابلیت دریافت مقدار رو به صورت پارامتر ندارن .شما میتوید خروجی View رو در برنامه فیلتر کنید یا اینکه شما برای اینکار میتونید از پروسیجرهای اس کیو ال استفاده کنید . یعنی دستور سلکت رو در بدنه یک پروسیجر بنویسید و مقادیر رو بهش پاس کنید که این تو اکسس همونی هستش که شما کوئری اکسس میگید بهش .
CREATE PROCEDURE PROCEDURE_NAME
@Param INT AS
SELECT * 
FROM TABLE_1
WHERE Field_1 = @Param
-----------------
موفق باشید .

----------


## ali_bagheri34

> View ها قابلیت دریافت مقدار رو به صورت پارامتر ندارن .شما میتوید خروجی View رو در برنامه فیلتر کنید یا اینکه شما برای اینکار میتونید از پروسیجرهای اس کیو ال استفاده کنید . یعنی دستور سلکت رو در بدنه یک پروسیجر بنویسید و مقادیر رو بهش پاس کنید که این تو اکسس همونی هستش که شما کوئری اکسس میگید بهش .
> CREATE PROCEDURE PROCEDURE_NAME
> @Param INT AS
> SELECT * 
> FROM TABLE_1
> WHERE Field_1 = @Param
> -----------------
> موفق باشید .



سلام 
دوست عزیز چگونه می توانم این پروسیجر را به یک جدول دیگر جوین کنم  چون می خواهم نتیجه سال مالی را با جداولم ارتباط بدهم چون در یک وییو در حالت دیزاین نمی شود یک پروسیجر را اضافه کرد اس کیو ال فقط وییو و یا جدول و یا فانکشن را مجاز برای اضافه کردن می داند 
مانند شکل زیر

----------


## Amir_Safideh

دوست عزیز یه توضیح کوتاه خدمتتون عرض میکنم . من خدمتون عرض کردم که شما اگر نیاز دارید که یک مقدار رو به صورت متغییر (نه یک مقدار ثابت) در کوئری قرار بدید در اینصورت به جای ویو از پروسیجر ها استفاده کنید . و پروسیجر ها هر چند که دارای خروجی هستند( مانند جداول و ویوها) ولی قابلیت این رو ندارن که ازشون به عنوان یک ابزار در دسترس مثل جداول و ویوها استفاده کرد چون اونها باید Exec بشن تا خروجی داشته باشن . شما تمام چیزهائی رو که لازم داری به راحتی میتونی در قالب یک پروسیجر قرار بدی و پروسیجر رو هر بار در برنامت با مقدار مورد نیازت اجرا کنی و خروجی رو بگیری بدون نیاز به ویو .
--------------
موفق باشید .

----------


## AminSobati

اگر View به شکلی که پارامتر بهش پاس کنین میتونه کمکتون کنه، بهتره به توابع فکر کنین: Inline Table Valued Functions

----------


## ali_bagheri34

> اگر View به شکلی که پارامتر بهش پاس کنین میتونه کمکتون کنه، بهتره به توابع فکر کنین: Inline Table Valued Functions


سلام 

متشکرم

----------


## ali_bagheri34

متشکرم آقای  AminSobati

----------

