Solved

Question on output parameter in VB.NET program.

Posted on 2006-07-20
3
194 Views
Last Modified: 2008-02-26
I have a stored proc:
CREATE proc usp_Test1    
@wo_num varchar(6),    
@emp_cd varchar(6) out,    
@status_message varchar(20) out    
as    
set @status_message = 'Print something'    
select @status_message, @emp_cd  
return    

When I run this stored proc: exec usp_Test1    '100000', 'aaa', 'bbb'
It has no error and will print: 'Print something'   'aaa'

But when I used in my vb.net program:
emp_cd = objCmd.Parameters("@emp_cd").Value
it will have an exception that shows:
"Cast from type 'DBNull' to type 'String' is not valid."

It's obviously because that output parameter was not assisgned a value.
1. But my question is, why it was null instead of getting the value from the parameter list in exec usp_Test1    '100000', 'aaa', 'bbb', i.e. got a value of 'aaa'?
2. My solution to the above problem was added one more initilization line:
set @emp_cd = ''  
Is there any better way or standard way of doing this? Thanks a lot.
0
Comment
Question by:heyday2004
  • 2
3 Comments
 
LVL 24

Expert Comment

by:Justin_W
ID: 17150761
I assume you have declared emp_cd as a String. If there is any possiblility that it can return NULL, you need to declare it as type Object, and only cast it to string if (DBNull.Value.Equals(emp_cd)) is false.
0
 
LVL 24

Assisted Solution

by:Justin_W
Justin_W earned 100 total points
ID: 17150764
FYI: This is because DBNull and Nothing/null are not the same thing in .NET.
0
 
LVL 24

Accepted Solution

by:
Jeff Certain earned 400 total points
ID: 17151541
For some reason, Microsoft has created an object called System.DBNull which represents an empty field. What's really baffling is that they made this object not cast to anything else (i.e. not string, integer, double)

The easiest way to deal with this is to rewrite your stored procedure to return something other than a NULL:
select @status_message, ISNULL(@emp_cd  ,'')
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now