Solved

Question on output parameter in VB.NET program.

Posted on 2006-07-20
3
202 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

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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 …
It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

829 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