View Full Version : سوال: ارسال مقدار به یک sp
  
mahtab kf
پنج شنبه 12 بهمن 1391, 16:24 عصر
با سلام
مقدار name را با کوئری استرینگ به صفحه مورد نظرم ارسال می کنم و در آنجا به صورت زیر بازیابی می کنم:
string name = Request.QueryString["name"];
حالا این مقدار رو به یک sp می فرستم :
GridView1.DataSource = ADO.ExecuteDataset(name, PageIndex, PageSize);
اما خطای زیرو می گیره:
Must declare the scalar variable "@name".ممنون میشم راهنماییم کنید.
mahtab kf
جمعه 13 بهمن 1391, 00:37 صبح
دوستان نمی تونید کمکم کنید؟
shervin837
جمعه 13 بهمن 1391, 01:30 صبح
باید متغیر name را در SP تعریف کنی.
mahtab kf
شنبه 14 بهمن 1391, 11:35 صبح
باید متغیر name را در SP تعریف کنی.
متغیر name را در SP به صورت زیر تعریف کردم :
    public DataSet ExecuteDataset(string name, int PageIndex, int PageSize)
    {
        using (SqlConnection con = new SqlConnection(ConnectionString))
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "[Paging]";
            cmd.Parameters.AddWithValue("@name",name);
            cmd.Parameters.AddWithValue("@PageIndex", PageIndex);
            cmd.Parameters.AddWithValue("@PageSize", PageSize);
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            con.Open();
            da.Fill(ds);
            con.Close();
            return ds;
        }
یه نکته دیگه اینه که من این تابع رو در یک کلاس به نام codTBItem تعریف کردم:
codTBItem ADO = new codTBItem();
mahtab kf
یک شنبه 15 بهمن 1391, 10:29 صبح
:ناراحت::افسرده: دوستان؟؟؟
fakhravari
یک شنبه 15 بهمن 1391, 11:35 صبح
کد sp بزار
mahtab kf
یک شنبه 15 بهمن 1391, 12:54 عصر
کد sp بزار
 کد sp به صورت زیره:
ALTER PROCEDURE [dbo].[Paging]
(
   @name nvarchar(20),
   @PageIndex int,
   @PageSize int
)
AS
BEGIN
declare @SQLText nvarchar(500)
set @SQLText = 'SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY name) as RowNum FROM TBaddItem where NameItem=@name ) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
exec(@SQLText)
END
ممنون
fakhravari
یک شنبه 15 بهمن 1391, 16:02 عصر
یه مثال
 
declare    @TableName nvarchar(20) = 'B_Topics';
declare    @PageIndex int = 1;
declare    @PageSize int = 10;
declare    @OrderID nvarchar(20) = 'TopicID';
declare @RowStart int=0;
declare @RowFnish int=0;
declare @SQL nvarchar(max);
    
set    @RowStart = (@PageIndex -1) * @PageSize
set    @RowFnish = @PageIndex * @PageSize
    
set @SQL ='WITH T1 AS
(
    select row_number() over(order by TopicID) as Rng,*
    from '+@TableName+'
)
select * from
(
select * from T1
WHERE Rng BETWEEN '+cast(@RowStart as nvarchar)+' and '+cast(@RowFnish as nvarchar)+'
) T1
order by '+@OrderID+''
exec sp_executesql  @SQL
این مقادیر مقدار بدین خروجی عوض میشه
declare    @TableName nvarchar(20) = 'B_Topics';
declare    @PageIndex int = 1;
declare    @PageSize int = 10;
declare    @OrderID nvarchar(20) = 'TopicID';
mahtab kf
یک شنبه 15 بهمن 1391, 18:12 عصر
این مقادیر مقدار بدین خروجی عوض میشه
 میشه لطفاً بیشتر توضیح بدید دقیقاً مشکلم چیه؟
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.