PDA

View Full Version : select کردن تمام فیلدهای جدول در SP



firoozi90
شنبه 31 خرداد 1393, 10:37 صبح
سلام دوستان
من یه فانکشن توی دیتابیسم تعریف کردم و اونو پاس دادم به Sp و توی پروژه ام ازش استفاده کردم
declare @Gow nvarchar(200)
select @Gow=ProName from ProfTable


این قسمتی از این تابع است که باید همه مقادیر فیلد رو بهم برگردونه،اما نمی دونم چرا فقط آخرین فیلدو بر می گردونه
توی SQL هم تست کردن این تکه کدو اما نمی دونم چرا فقط آخری رو بهم بر می گردونه

plus
شنبه 31 خرداد 1393, 13:16 عصر
خوب شما فقط فیلد ProName رو SELECT میکنید چه انتظار دیگه ای دارین.
http://msdn.microsoft.com/en-us/library/ms189499.aspx

firoozi90
شنبه 31 خرداد 1393, 14:06 عصر
خوب شما فقط فیلد ProName رو SELECT میکنید چه انتظار دیگه ای دارین.
http://msdn.microsoft.com/en-us/library/ms189499.aspx

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

plus
شنبه 31 خرداد 1393, 14:16 عصر
اگه به تنهایی از SELECT ProName from ProfTable استفاده کنید، همه مقادیر رو برمیگردونه اما اگه میخواین مقادیر رو درون یک متغیر بریزین، با روشی که نوشتین فقط آخری رو در متغیر nvarchar میریزه.
باید متغیر از نوع جدول تعریف کنید:

DECLARE @ProNamesTable TABLE
(
ProName nvarchar(200)
)

و بعد با INSERT INTO خروجی SELECT رو در اون بریزین:

INSERT INTO @ProNamesTable (ProName)
SELECT ProName FROM ProfTable

firoozi90
شنبه 31 خرداد 1393, 15:09 عصر
اگه به تنهایی از SELECT ProName from ProfTable استفاده کنید، همه مقادیر رو برمیگردونه اما اگه میخواین مقادیر رو درون یک متغیر بریزین، با روشی که نوشتین فقط آخری رو در متغیر nvarchar میریزه.
باید متغیر از نوع جدول تعریف کنید:

DECLARE @ProNamesTable TABLE
(
ProName nvarchar(200)
)

و بعد با INSERT INTO خروجی SELECT رو در اون بریزین:

INSERT INTO @ProNamesTable (ProName)
SELECT ProName FROM ProfTable


حالا اسم متغیرم چی مشه؟کدومو باید توی کد هام استفاده کنم؟
فرض کنید مقادیر بدست اومده از این متغیر را بخوام طول رشتشو بدست بیارم

plus
شنبه 31 خرداد 1393, 16:05 عصر
اسم متغیر که از نوع Table تعریف شده، ProNamesTable@ هست. شما میتونید با این مثل یک Table رفتار کنید.برای مثال، همین طول رشته،

DECLARE @ProductTotals TABLE
(
ProName nvarchar(200)
)

INSERT INTO @ProNamesTable (ProName)
SELECT ProName FROM ProfTable

SELECT LEN(ProName) FROM @ProNamesTable

firoozi90
یک شنبه 01 تیر 1393, 08:33 صبح
اسم متغیر که از نوع Table تعریف شده، ProNamesTable@ هست. شما میتونید با این مثل یک Table رفتار کنید.برای مثال، همین طول رشته،

DECLARE @ProductTotals TABLE
(
ProName nvarchar(200)
)

INSERT INTO @ProNamesTable (ProName)
SELECT ProName FROM ProfTable

SELECT LEN(ProName) FROM @ProNamesTable


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

firoozi90
یک شنبه 01 تیر 1393, 10:00 صبح
من یه جدول دارم که یکی از فیلدهاش رشته داخلش ذخیره میشه، و رشته ها با دش از هم جدا شده اند ،مثل (سایت-برنامه نویس) حالا من می خوام یه کوئری بگیرم که سمت چپ و راست این دش را واسم برگردونه ،مثلا (سایت) رو توی یه ستون نشون بده و (برنامه نویس) رو توی ستون دیگه

من از کد زیر برای اینکار استفاده کردم

DECLARE @GowTable TABLE
(
Gow nvarchar(200)
)
INSERT INTO @GowTable (Gow)
SELECT GoodsOwner.GoodsOwnerName FROM GoodsOwner

که کد زیر رو توی سلکت استفاده کردم،اما نمی دونم چرا اررور میده ،در ضمن همزمان از چندتا جدول واقعی دیگه هم سلکت کردم
substring(Gow,1,charindex('-',Gow)-1) F1,substring(Gow,charindex('-',Gow)+1,len(Gow)) f2




اینم اررور
Msg 537, Level 16, State 3, Line 11
Invalid length parameter passed to the LEFT or SUBSTRING function.

plus
یک شنبه 01 تیر 1393, 13:24 عصر
احتمالا داده ها جوری هست که پارامتر دوم SUBSTRING اولی منفی میشه. Query رو مرحله به مرحله بنویسید تا ببینید کجاش اشکال داره.داده ها رو هم بررسی کنید.مثلا اگه شما یک Gow ی داشته باشید که با - شروع بشه، charindex ش میشه 0 و بعد با -1 ی که گذاشتین پارامتر دوم میشه -1 که خطا میده...