PDA

View Full Version : سوال: مشکل در نمایش خروجی Stored Procedure



Ehsan Valinouri
جمعه 07 تیر 1387, 17:45 عصر
با سلام.
SP ای دارم که در اون 3 SP دیگر Execute میشن.

ALTER PROCEDURE dbo.sp_Final
(@Keyword nvarchar (50))

AS

exec TypeSearch @Keyword
exec CatSearch @Keyword
exec sp_Search @Keyword

RETURN اشکال هنگامی پیش میاد که با دستور زیر میخوام خروجی روال بالا رو در Grid بریزم. در این حالت تنها محتویات اولین SP ای که exec می شود نمایش داده می شود (در اینجا TypeSearch).

Dim constr As String = ConfigurationManager.ConnectionStrings("connectionstring").ConnectionString
Dim con As New SqlConnection(constr)
Dim cmdtxt As String = "sp_Final"
Dim cmd As New SqlCommand(cmdtxt, con)
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.Parameters.Add("Keyword", Data.SqlDbType.NVarChar).Value = txtSearch.Text
con.Open()
Dim dr As SqlDataReader
dr = cmd.ExecuteReader
grdResults.DataSource = dr
grdResults.DataBind()البته در استفاده از SP خیلی ناشی هستم. احتمال زیادی میدم این روش فراخوانی SP غلط باشه. ممنون میشم روش بهینه و مناسبی رو پیشنهاد بدین.

Ehsan Valinouri
جمعه 07 تیر 1387, 18:46 عصر
بگذارید کار رو راحت تر کنم. به جای exec کردن میام و همه دستورات select رو در یک SP می نویسم.

ALTER PROCEDURE dbo.sp_Search
(@Keyword nvarchar (50))

AS

select Stuf_Name from tbl_Stuf where Stuf_ID in(
select distinct Stuf_ID from tbl_Stuf_Property inner join
tbl_Text_Value on tbl_Text_Value.Stuf_Property_ID=tbl_Stuf_Property. Stuf_Property_ID inner join
tbl_nText_Value on tbl_nText_Value.Stuf_Property_ID=tbl_Stuf_Property .Stuf_Property_ID inner join
tbl_Numeric_Value on tbl_Numeric_Value.Stuf_Property_ID=tbl_Stuf_Proper ty.Stuf_Property_ID
where tbl_Text_Value.Text_Value like '%'+@Keyword+'%' or tbl_nText_Value.nText_Value like '%'+@Keyword+'%' or tbl_Numeric_Value.Numeric_Value like '%'+@Keyword+'%')

select Category_ID from tbl_Type where Type_ID in(
select Type_ID from tbl_Stuf where Stuf_ID in(
select distinct Stuf_ID from tbl_Stuf_Property inner join
tbl_Text_Value on tbl_Text_Value.Stuf_Property_ID=tbl_Stuf_Property. Stuf_Property_ID inner join
tbl_nText_Value on tbl_nText_Value.Stuf_Property_ID=tbl_Stuf_Property .Stuf_Property_ID inner join
tbl_Numeric_Value on tbl_Numeric_Value.Stuf_Property_ID=tbl_Stuf_Proper ty.Stuf_Property_ID
where tbl_Text_Value.Text_Value like '%'+@Keyword+'%' or tbl_nText_Value.nText_Value like '%'+@Keyword+'%' or tbl_Numeric_Value.Numeric_Value like '%'+@Keyword+'%'))

select Type_ID from tbl_Stuf where Stuf_ID in(
select distinct Stuf_ID from tbl_Stuf_Property inner join
tbl_Text_Value on tbl_Text_Value.Stuf_Property_ID=tbl_Stuf_Property. Stuf_Property_ID inner join
tbl_nText_Value on tbl_nText_Value.Stuf_Property_ID=tbl_Stuf_Property .Stuf_Property_ID inner join
tbl_Numeric_Value on tbl_Numeric_Value.Stuf_Property_ID=tbl_Stuf_Proper ty.Stuf_Property_ID
where tbl_Text_Value.Text_Value like '%'+@Keyword+'%' or tbl_nText_Value.nText_Value like '%'+@Keyword+'%' or tbl_Numeric_Value.Numeric_Value like '%'+@Keyword+'%')
Return

البته مشکل هنوز پا بر جاست. F1 Please

KavoshGar_ir
جمعه 07 تیر 1387, 20:01 عصر
خیلی پیچده نیست؟! من نفهمیدم مشکل از کجاست ولی پیشنهاد می کنم سر ستونها را تغییر بدی! به عبارتی اگر در اینر جوین دو ستون به نام A باشه از دو جدول متفاوت یکی نمایش داده میشه! چیزی که من تجربه اش کردم!

سر ستونت را هم به صورت مثال زیر میتونی تغییر بدی!


select tbl.num as 'SecondName' from table
شاید این تجربه من کمکت کرد رفیق!