| 
	
 | 
 Posted by Krij on 02/21/07 07:19 
On 20 Feb, 14:41, "Dan Guzman" <guzma...@nospam-online.sbcglobal.net> 
wrote: 
> > However, I'm a little uncertain whether I should use OUTPUT or INPUT 
> > as a parameter. 
> 
> Use an input parameter (the default) to provide the search value to the 
> proc. 
> 
> > This works fine if I'm using a dataset, but I'd like to use a 
> > datareader because I think it is less consuming of resources. 
> 
> A DataReader can be used to process the stored procedure result set without 
> changing the stored procedure code. 
> 
> There are 3 basic ways that a stored procedure can return data:  OUTPUT 
> parameter, result set (SELECT) and the return code (RETURN).  The Best 
> Practice is to use the return code only to indicate success or failure. 
> OUTPUT parameters are typically an option only when scalar values returned. 
> In your case, you need to use a result set because many rows can be 
> potentially returned.  For example: 
> 
> CREATE PROCEDURE dbo.CustomersOrderHistory 
>     @Firstname varchar(7) 
> AS 
> 
> SELECT ... 
> WHERE dbo.Customers.Firstname LIKE @Firstname 
> 
> RETURN @@ERROR 
> GO 
> 
> Note that parameters are accessed via the Command object rather than a 
> DataReader.  The stored procedure return code is exposed in .Net as a 
> parameter with direction ReturnValue. 
> 
> -- 
> Hope this helps. 
> 
> Dan Guzman 
> SQL Server MVP 
> 
> "Krij" <g...@start.no> wrote in message 
> 
> news:1171951004.077395.42310@v45g2000cwv.googlegroups.com... 
> 
> > Hi, 
> 
> > I'm a student and I have the following working example that troubles 
> > me (in SQL Server 2005): 
> 
> > CREATE PROCEDURE dbo.CustomersOrderHistory 
> > ( @Firstname varchar(7) OUTPUT) 
> > AS 
> > SELECT     dbo.Customers.Firstname, dbo.Orders.Orderdate, 
> > dbo.Orderdetails.Orderamount, dbo.Orderdetails.Orderprice, 
> > dbo.Orderdetails.Orderdiscount, 
> >                      dbo.Items.Itemname,dbo.Orderdetails.Orderamount 
> > * dbo.Orderdetails.Orderprice AS Ordersum 
> > FROM         dbo.Orderdetails INNER JOIN 
> >                      dbo.Items ON dbo.Orderdetails.ItemID = 
> > dbo.Items.ItemID INNER JOIN 
> >                      dbo.Orders ON dbo.Orderdetails.OrderID = 
> > dbo.Orders.OrderID INNER JOIN 
> >                      dbo.Customers ON dbo.Orders.Customer = 
> > dbo.Customers.CustomerID 
> > WHERE dbo.Customers.Firstname LIKE @Firstname 
> > ORDER BY dbo.Orders.Orderdate 
> > /* SET NOCOUNT ON */ 
> > RETURN @Firstname 
> 
> > Now I'm calling this stored procedure from C# code on an aspx page. 
> > The @Firstname parameter is supposed to be used against the user who 
> > logges in to his customerpage. When the customer page loads his 
> > orderhistory will be filled into a gridview through a datareader. 
> 
> > However, I'm a little uncertain whether I should use OUTPUT or INPUT 
> > as a parameter. 
> 
> > This works fine if I'm using a dataset, but I'd like to use a 
> > datareader because I think it is less consuming of resources. 
> 
> > As it is now the stored procedure return nothing and I wonder where I 
> > go wrong. 
> 
> > Any tip? 
> 
> > Thank you in advance. 
> 
> > Me.Name 
 
Thanks :-)
 
  
Navigation:
[Reply to this message] 
 |