Use Raiserror with severy >=16:
create procedure InsertEmployee
@.id int
as
if @.id = 0
begin
RAISERROR ('Employee ID can''t be 0',16,1);
end
else
begin
--INSERT here
print 'ID > 0 '
end
|||But the important section is how to catch this error message from windows application and show it when the user try to enter value for id employee less than 1|||That depends on the technology that you are using to connect to the database server and also the programming language that you have used to develop the client application. You're unlikely to get the answer to your question in a T-SQL forum.
See if you can find a more relevant forum in this list:
http://forums.microsoft.com/MSDN/default.aspx?siteid=1
Just to steer you in the right direction, and now that you've been advised on how to raise errors in your stored procedures, then this forum might be the next port of call:
http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=45&SiteID=1
Chris
|||If you want to use SqlCommand explicitly:SqlCommand cmd = new SqlCommand("<name of your SP>",conn);
cmd.Parameters.Add("@.ID",SqlDBType.Int);
cmd.Parameters["@.ID"].Value = <value from user input>;
try
{
cmd.ExecuteNoQuery();
}
catch(SqlException e)
{
//Catch error here
//For example
MessageBox.Show(e.Errors[0].Message);
}
If you want to use SqlDataAdapter/TableAdapter
SqlDataAdapter da = <some code to obtain>;
try
{
da.Update(ds);//ds - you dataset or datatable
}
catch(SqlException e)
{
//Catch error here
//For example
MessageBox.Show(e.Errors[0].Message);
}|||The whole point is that if your are giving id as parameter why not check the value inside your application before sending it to the SP.
Now other option is to write a trigger inside which u rollback ur transaction if id is 0. This will prevent 0's not only from appl but also from backend
No comments:
Post a Comment