ورود

View Full Version : مشکل در SP و خطای Invalid object name



malakootian
شنبه 22 مرداد 1390, 23:30 عصر
با سلام
1- می خواستم ببینم چطوری از یک SP خروجی بگیرم مثلا با یک select نام و نام خانوادگی را گرفته در sp درون یک متغیر باهم یکی کرده و سپس آن را به خروجی بفرستم.
2-این کد چرا error می دهد:

ALTER Procedure [dbo].[P2]
@T varchar(10)
as
select * from "@T"
وقتی اجرا می کنم در محیط sql server خطا می دهد اما از لحاظ نگارشی خطایی ندارد
use dbvideo
go
execute p2 "TBase"

یوسف زالی
یک شنبه 23 مرداد 1390, 03:49 صبح
سلام.
براس آشنایی با SP اینجا رو ببینید:
http://barnamenevis.org/showthread.php?296719-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-SP

معنای سوال اول شما رو نگرفتم. کمی توضیح بدید.
اما سوال دوم شما:
شما وقتی می گید "T@" در حقیقت منظورتون این هست که نام جدول شما T@ هست نه اینکه درون T@ نام جدول شما وجود داره.
اما select * from @T هم اگر T@ از نوع جدول نباشه اشکال داره.
برای اونچه شما می خواهید این طور عمل کنید:

create procedure P2
T as vahchar(10) as@
begin
declare @x varchar(100) set @x = 'select * from ' + @T
exec(@X) -- inja select run mishe
end

malakootian
یک شنبه 23 مرداد 1390, 14:39 عصر
1-در حقيقت من مي خوام اسم جدول را به عنوان يک پارامتر به sp بفرستم و 1 دستور select را اجرا کنم

یوسف زالی
یک شنبه 23 مرداد 1390, 18:12 عصر
دوست من کدی که گذاشتم دقیقا همین کار رو می کنه:


create procedure P2
@T as varchar(20) as
begin
declare @x varchar(100) set @x = 'select * from ' + @T
exec(@X) -- inja select run mishe
end

malakootian
سه شنبه 25 مرداد 1390, 14:51 عصر
با سلام
ازت بابت راهنمايي و وقتي که گذاشتي ممنونم
و با عرض شرمندگی یک سوال دیگه فرق اینکه ما یک متغییر را به عنوان خروجی تعریف می کنیم ویک مقدار را به ما برمی گرداند با متغییری که در بدن SP تعریف کردید در بالا و آن را در دستور exec(@X) فراخوانی کردید چیه اصلا برای چی اینکار را کردید؟؟
ممنون