PDA

View Full Version : مشکل در Declare کردن Table



AmirAlimadadi
دوشنبه 12 بهمن 1388, 20:12 عصر
با سلام
من تو Stored Procedure ای که نوشتم احتیاج به اجرای دستوری شبیه زیر دارم


ALTER PROCEDURE test

(
@parPishno nvarchar(5)

)

AS
declare @tbltest table
(
nYear nvarchar(10),PishNo nvarchar(5),RecNo nvarchar(5),
SndDat decimal(10,0)
)
exec(
'insert into @tbltest select Year,PishNo,RecNo,SndDat from tblAc03 where PishNo = ' + @parPishno
)
select * from @tbltest
return

که با declare table ایجاد این خطا رو در خطی که دستور exec نوشته شده می کنه
Must declare the table variable "@tbltest"
البته با create کردن table خطایی نمی گیره اما به دلیل مشکلاتی نمی خوام create کنم آیا کسی با همین declare کردن پیشنهادی داره؟

محمد سلیم آبادی
دوشنبه 12 بهمن 1388, 20:22 عصر
سلام،
اینطوری که پیداست نیازی به دستور execن دارین یعنی :


ALTER PROCEDURE test
@parPishno nvarchar(5)
AS
declare @tbltest table
(
nYear nvarchar(10),
PishNo nvarchar(5),
RecNo nvarchar(5),
SndDat decimal(10,0)
)

insert into @tbltest
select Year,PishNo,RecNo,SndDat
from tblAc03
where PishNo = @parPishno

select * from @tbltest
return

AmirAlimadadi
سه شنبه 13 بهمن 1388, 16:10 عصر
سلام،
اینطوری که پیداست نیازی به دستور execن دارین یعنی :


ALTER PROCEDURE test
@parPishno nvarchar(5)
AS
declare @tbltest table
(
nYear nvarchar(10),
PishNo nvarchar(5),
RecNo nvarchar(5),
SndDat decimal(10,0)
)

insert into @tbltest
select Year,PishNo,RecNo,SndDat
from tblAc03
where PishNo = @parPishno

select * from @tbltest
return


ممنون از راهنمایتون ولی گویا نتونسم منظورم رو درست برسونم این کد یه مثال بود از مشکلی که دارم در صورتی که تو کد برنامم من مجبورم یه string بسازم بعد اونرو exec کنم، یعنی استفاده از exec برای من اجباری هست (به دلایل برنامه نویسی و ساختاری) که در اینصورت اسم جدولی که declare شده باشه رو توی string تشخیص نمیده، کسی میدونه چیکار باید بکنم؟

محمد سلیم آبادی
سه شنبه 13 بهمن 1388, 17:50 عصر
محدوده ی این نوع جدول محدود می شه به جایی که تعریف شده و قابل تشخیص و استفاده در level های دیگر نیست.

چرا از جداول موقت سراسری (global temporary table) استفاده نمی کنید؟