سلام
من یک stored procedure با چند پارامتر دارم که نتیجه اجرای آن یک جدول است .
حال می خواهم این stored procedure را در یک View استفاده کنم. چگونه می تونم اینکار را انجام بدهم. لطفا راهنمایی کنید.
در ضمن این stored procedure من، encription میباشد .
سلام
من یک stored procedure با چند پارامتر دارم که نتیجه اجرای آن یک جدول است .
حال می خواهم این stored procedure را در یک View استفاده کنم. چگونه می تونم اینکار را انجام بدهم. لطفا راهنمایی کنید.
در ضمن این stored procedure من، encription میباشد .
وبلاگ من (Advanced SQL Querying)
سلام ، خوب آیا می تونیم خروجی Stored procedure را در یک جدول موقت ریخته و جدول را در view استفاده کنیم. این جدول هم خودش ایجاد بشه و احتیاج به ایجاد کردنش نباشد.
با تشکر
سلام،
هر نرم افزار RDBMS ای قواعد دستوری خاص خودش را دارد. شما اگر این سوال را در تالار SQL Server مطرح می کردید من در جواب به این سوال "آیا می توانیم خروجی SP را در یک جدول موقت بریزیم؟" می گفتم بله می شود. با این syntax
INSERT INTO #temporary_table EXECUTE your_proceduer
ولی اینکه آیا می شود View ای ایجاد کرد که بر اساس یک جدول موقت باشد فکر نمی کنم این امکان وجود داشته باشد.
اگر از دستور SELECT INTO استفاده کنید می توانید یک جدول دیگری بر اساس جدول مورد نظر ایجاد کنید که دقیقا شامل همان ساختار باشد.
SELECT * INTO #temporary_table FROM your_table_name_here WHERE 1=2
وبلاگ من (Advanced SQL Querying)
با تشکر از جنابعالی
من دستورات شما را استفاده کردم اما جدول موقت نمی سازه ، وپیغام خطا میدهد.
Invalid object name '#temporary_table'.
لابد باید تو تنظیمات sql server تغییراتی بدهم ، یا باید برای جدول موقت اسمی انتخاب کنم و از قبل فیلد هاش را تعریف کنم. اینطور نیست؟ واگر جدول موقت را ساخت کجا باید پیدا یش کنم؟.
چه دستوری را ایجاد کردین که این پیغام داده شد؟ SELECT گرفتین بعد از SELECT INTO ؟
چداول موقت همگی در بانک tempdb ذخیره میشن در پوشه ی temprary tables .
حالا اینبار قبل از SELECT گرفتن از داده های جدول دستور USE tempdb هم بنویسید.
وبلاگ من (Advanced SQL Querying)
من دستور زیر را اجرا کردم:
INSERT INTO #temporary_table EXECUTE SPamarhalesپیغام خطا بالا را داد. بعد یک جدول یر اساس خروجی stored procedure ایجاد کردم و دستور زیر را اجرا کردم .جواب داد:INSERT INTO myTable EXECUTE SPamarhalesو دستور زیر را که اجرا کردم:SELECT * INTO #temporary_table FROM table1جدول موقت را در دیتابیس مربوطه ساخت .
حال بنظر شما چرا دستور اولی جدول موقت ایجاد نمی کنه؟
راستی این جدول موقت تا کی میمونه و چطور می تونیم حذفش کنیم؟
در دستور اول پیغام invalid object name داده میشه به این دلیل که اون جدول وقت وجود خارجی نداره که به خواهیم داخلش سطرهایی را درج کنیم.
دستور SELECT INTO ابتدا یک جدول ایجاد می کند سپس نتیجه ی SELECT را داخل آن جدول درج می کند. یعنی نباید قبلا جدولی با آن نام وجود داشته باشد، چون نمی توانیم دو جدول با یک نام ایجاد کنیم.
پس ابتدا باید جدول موقت ایجاد شود سپس از INSERT INTO #temp EXEC استفاده کنید.
جداول موقت را مثل جداول دیگه میشه حذف کرد یعنی با DROP.
راجب طول حیات این جداول من مطالب Book Online را جالب دیدم:
There are two types of temporary tables: local and global. Local temporary tables are visible only to their creators during the same connection to an instance of SQL Server as when the tables were first created or referenced. Local temporary tables are deleted after the user disconnects from the instance of SQL Server. Global temporary tables are visible to any user and any connection after they are created, and are deleted when all users that are referencing the table disconnect from the instance of SQL Server.
بستگی داره از چه نوع temp ای استفاده کرده باشین اگر local باشه زمانی جدول حذف میشه که کاربری که آن را ایجاد کرده یا استفاده می کرده از اسکیول Disconect بشه.
وبلاگ من (Advanced SQL Querying)