[dba-SQLServer]Calling a Sproc with Parameter

Susan Zeller szeller at cce.umn.edu
Wed Mar 5 12:57:14 CST 2003


In situtaions like this I do lots of testing eliminating one thing at a
time.  Given what you have already tried, what I would do is change the
sproc so it doesn't require an input parameter and then hard code a
value (active or %) into your sproc.  Try running it from the app to see
if it works.  If it does, you know for sure the problem is in how you
are passing the parameter.  If the problem is in passing the parameter,
I might put the parameter in a variable in your FE and then do something
like:
 
Me.RecordSource = "EXEC spfrmCustomers @AccStatus = " & strAccStatus
 
--Susan
 

	-----Original Message-----
	From: David Emerson [mailto:davide at dalyn.co.nz] 
	Sent: Wednesday, March 05, 2003 12:44 PM
	To: dba-sqlserver at databaseadvisors.com
	Subject: Re: [dba-SQLServer]Calling a Sproc with Parameter
	
	
	I have used query analyser and run the sproc both with entering
% and Active as the parameter.  Both work OK.
	
	I can't seem to find any information on "error 2353 - Bad query
parameter."  Anyone know of a source that will explain this?  (I tried
Access help, BOL, Google).
	
	Here is the sproc in case I have missed something -
	
	ALTER PROCEDURE spfrmCustomers
	
	        (
	                @AccStatus varchar(20) = '%'
	        )
	
	AS
	        SET NOCOUNT ON 
	         
	        SELECT dbo.tblCustomers.*,
	                case
	                        when [Residential]=1
	                                then CSurname + C1stName 
	                        else TradingName
	                end
	                as SortOrder
	        FROM dbo.tblCustomers
	        WHERE AccStatus like @AccStatus
	        ORDER BY SortOrder
	        
	        If @@Error <> 0 
	                Begin
	                        Select 'Unexpected error occurred: ',
@@Error
	                        Return @@Error
	                End
	        else
	                return 0
	
	
	
	David
	
	At 5/03/2003, you wrote:
	

		Both points are valid, but in this case the Sproc must
be able to handle the
		'%'.  Assuming that you are not executing Dynamic Sql in
your sproc you
		maybe manipulating the sproc to select all Customers not
just the active
		ones...  Do you have access to Query Analyzer? if so I
would test the sproc
		in there to make sure it executes w/o errors.  I have
found certain errors
		to be Access Only.  Such as selecting data from a linked
table on another
		server.
		
		
		-Francisco
		http://rcm.netfirms.com <http://rcm.netfirms.com/> 
		----- Original Message -----
		From: "Djabarov, Robert" <Robert.Djabarov at usaa.com>
		To: <dba-sqlserver at databaseadvisors.com>
		Sent: Wednesday, March 05, 2003 7:13 AM
		Subject: RE: [dba-SQLServer]Calling a Sproc with
Parameter
		
		
		I will have to respectfully disagree with the previous
recommendations.
		LIKE will prevent your sp from compiling in the first
place, while the usage
		of EXEC is very proper in the original code.  Although
the suggested form is
		still valid, specifying named parameters is actually
encouraged for the
		clarity of the code, and MS fully supports EXEC sp_PROC
@Parm1='<value>',
		@Parm2=<value>, etc.
		
		Robert Djabarov
		Senior SQL Server DBA
		USAA IT/DBMS
		* (210) 913-3148 - phone
		* (210) 753-3148 - pager
		
		-----Original Message-----
		From: Mike and Doris Manning
[mailto:mikedorism at ntelos.net]
		Sent: Wednesday, March 05, 2003 7:25 AM
		To: dba-sqlserver at databaseadvisors.com
		Subject: RE: [dba-SQLServer]Calling a Sproc with
Parameter
		
		Two things.
		
		1)  Make sure your sproc is looking for LIKE @AccStatus
and not = @AccStatus
		
		2)  When you use EXEC, you don't add the name of the
parameter.
		"EXEC spfrmCustomers 'Active'"
		
		Doris Manning
		Database Administrator
		Hargrove Inc.
		www.hargroveinc.com <http://www.hargroveinc.com/> 
		-----Original Message-----
		From: dba-sqlserver-admin at databaseadvisors.com
		[mailto:dba-sqlserver-admin at databaseadvisors.com] On
Behalf Of David Emerson
		Sent: Tuesday, March 04, 2003 07:01 PM
		To: dba-SQLServer at databaseadvisors.com
		Subject: [dba-SQLServer]Calling a Sproc with Parameter
		I have a button on a form which is used to filter the
records.  The code
		is -
		
		Private Sub cmdCustomerFilter_Click()
		
		    On Error GoTo Err_cmdCustomerFilter_Click
		
		    If Me!cmdCustomerFilter.Caption = "Show Active" Then
		        Me.RecordSource = "EXEC spfrmCustomers
@AccStatus = 'Active'"  <-
		Problem line
		        Me!cmdCustomerFilter.Caption = "Show All"
		    Else
		        Me.RecordSource = "EXEC spfrmCustomers
@AccStatus='%'"
		        Me!cmdCustomerFilter.Caption = "Show Active"
		    End If
		.....
		
		End Sub
		
		In the sproc the parameter is -
		
		@AccStatus varchar(20) = '%'
		
		When I click on the button I get error 2353 - Bad query
parameter.  I can
		run the query in Query analyser and it runs ok.
		
		If I leave the @AccStatus = 'Active' off then a message
appears telling me
		that the procedure expects the parameter (so this tells
me it is calling the
		correct sproc)
		
		I think the problem is in the call but can't put my
finger on it.  Any help?
		
		
		
		Regards
		
		David Emerson
		DALYN Software Ltd
		25b Cunliffe St, Johnsonville
		Wellington, New Zealand
		Ph/Fax (877) 456-1205
		
		_______________________________________________
		dba-SQLServer mailing list
		dba-SQLServer at databaseadvisors.com
	
http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
		http://www.databaseadvisors.com
<http://www.databaseadvisors.com/> 

	Regards
	
	David Emerson
	DALYN Software Ltd
	25b Cunliffe St, Johnsonville
	Wellington, New Zealand
	Ph/Fax (877) 456-1205 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://databaseadvisors.com/pipermail/dba-sqlserver/attachments/20030305/20ce0c86/attachment.html>


More information about the dba-SQLServer mailing list