Solved

Stored procedure query with if

Posted on 2016-08-31
27
36 Views
Last Modified: 2016-08-31
Hello,
How can i add a validation in the query below :
             
	 	@Ref nvarchar(20)= NULL,
	@BookingType nvarchar(50)= NULL,
	@CorresType nvarchar(50)= NULL,
	@Date nvarchar(20) =NULL,
    @SentTo nvarchar(50) =NULL,
	@Attention nvarchar (255)= NULL,
	@FaxNumber nvarchar(50)= NULL,
	@Regarding nvarchar(255)= NULL,
	@Authority  nvarchar (50)= NULL,
	@SentBy nvarchar (50) =NULL,
	@Comments nvarchar(255)= NULL,	
	@RequestedBy nvarchar (255)= NULL,
	@GuestName nvarchar(255)= NULL,
	@RoomTypeRouting nvarchar(50)= NULL,
	@ArrivalDate VARCHAR(20)= NULL,	
	@DurationofStay nvarchar(50) =NULL,
	@Extendedto nvarchar(20)= NULL,
	@ConfirmationNumber nvarchar(255)= NULL,
	@e_UID Nvarchar(MAX)=null
	 


 INSERT INTO DEBUG(SQL) VALUES ( 'UPDATE  table1
		(
			   [Ref]
      ,[BookingType]
      ,[CorresType]    
      ,[SentTo]
      ,[Attention]
      ,[FaxNumber]
      ,[Regarding]
      ,[Authority]
      ,[SentBy]
      ,[Comments]    
      ,[RequestedBy]
      ,[GuestName]
      ,[RoomTypeRouting]
      ,[ArrivalDate]
      ,[DurationofStay]
      ,[Extendedto]
	  ,[Date]
      ,[ConfirmationNumber]   
		) 
		VALUES
		(
			''' +@Ref + ''' )
			  '''+ @BookingType + ''' ),
			'''+@CorresType +''' ),		
		    '''+@SentTo +''' ),
			'''+@Attention +''' ),
			'''+@FaxNumber + ''')
			'''+@Regarding + '''),
			'''+@Authority +''' ),
			'''+@Comments +''' ),
			'''+@SentBy +''' ),
			'''+@Comments +''' ),
			'''+@RequestedBy +''' ),
			'''+@GuestName +''' )
			'''+@RoomTypeRouting +''' )
		    '''+@ArrivalDate +''' )
		    '''+@DurationofStay +''' )
validation required [b]if @extendedto is not ''[/b]
				'''+@Extendedto +''' )
				    WHERE [e_UID] =''' + @e_UID + '''')	
			
	  

Open in new window


Cheers
0
Comment
Question by:RIAS
  • 15
  • 8
  • 4
27 Comments
 
LVL 46

Expert Comment

by:Vitor Montalvão
ID: 41777866
Which kind of validation?
If it's outside the INSERT then a simple IF..ELSE will be fine.
If it's inside the INSERT then you should use a CASE statement.
0
 

Author Comment

by:RIAS
ID: 41777872
Ah Vitor!

            need to check if             '''+@Extendedto +''' ) is null or '' or empty  
if not then add @Extendedto or else set it to null
0
 
LVL 46

Expert Comment

by:Vitor Montalvão
ID: 41777883
Use ISNULL then. Even I guess if you don't do nothing it will work.
What happens if one of the previous variables are NULL?
0
 

Author Comment

by:RIAS
ID: 41777887
If the @Extendedto is null or '' .It does not work .
0
 

Author Comment

by:RIAS
ID: 41777889
Error is cannot convert varchar to tyoe date
0
 

Author Comment

by:RIAS
ID: 41777892
How to write the condition ISNull
0
 

Author Comment

by:RIAS
ID: 41777903
'+ isnull(@Extendedto,)+' ) ??
0
 
LVL 46

Accepted Solution

by:
Vitor Montalvão earned 500 total points
ID: 41777906
Try this:
ISNULL(@Extendedto, 'NULL')

It will return 'NULL' to be concatenated to the main string.
0
 

Author Comment

by:RIAS
ID: 41777910
Thanks a ton Vitor!!!
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 41777925
If I am not mistaken, by using the latest syntax, you will insert the string NULL into the field and not a NULL  value.
0
 

Author Comment

by:RIAS
ID: 41777928
You are correct Eric,it does insert value 'NULL'
0
 
LVL 46

Expert Comment

by:Vitor Montalvão
ID: 41777931
If I am not mistaken, by using the latest syntax, you will insert the string NULL into the field and not a NULL  value.
I guess is what is pretended. The INSERT is a single string that has an UPDATE command. For auditing purposes I'll also guess.
0
 

Author Comment

by:RIAS
ID: 41777933
True Vitor,that solves my issue
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 69

Expert Comment

by:Éric Moreau
ID: 41777935
this is the kind of syntax you need to really insert a NULL value (instead of a string) into your query:
DECLARE @Extendedto VARCHAR(10) = NULL -- 'test'
DECLARE @x VARCHAR(100) 
SET @x = 'insert into (f1,f2,f3) values(''v1'', ''v2'', ' + ISNULL('''' + @Extendedto + '''', 'null') + ')'
SELECT @x

Open in new window

1
 
LVL 46

Expert Comment

by:Vitor Montalvão
ID: 41777937
True Vitor,that solves my issue
Good.
Then please close this question by choosing the comment that helped you so others Experts can know this is solved and don't loose time that can be used to help others.
Thank you
0
 

Author Closing Comment

by:RIAS
ID: 41777938
Cheers!
0
 

Author Comment

by:RIAS
ID: 41777939
Eric thanks !
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 41777943
are you sure you selected the right comment as the answer?
0
 

Author Comment

by:RIAS
ID: 41777944
Yes,Eric  Vitor solved the issue.
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 41777991
I am not sure you see the difference. Vitor answer will insert a string value containing NULL.

What I am proposing is to insert a real database null value (not a string).

so later if you do :
select * from debug where Extendedto is null

Open in new window

the code from vitor won't work but mine will.

so it is really up to you do decide if you need a real null value or a string containing the characters NULL
0
 
LVL 46

Expert Comment

by:Vitor Montalvão
ID: 41777998
@Eric, I already told you in my comment  #a41777931 that she needs the string NULL and not really the NULL value.
0
 

Author Comment

by:RIAS
ID: 41778003
Eric, Its only for Audit and its not an actual insert in the table.It just stores the information as what the user is doing .
0
 

Author Comment

by:RIAS
ID: 41778011
Vitor,
Is there any change for the int field as the code works for date field but fails on int field


ISNULL(@Extendedto, 'NULL')
0
 
LVL 46

Expert Comment

by:Vitor Montalvão
ID: 41778025
What's the error?
0
 

Author Comment

by:RIAS
ID: 41778042
It insert Just NULL.
there is no error message box but instead of the query its NULL
0
 
LVL 46

Expert Comment

by:Vitor Montalvão
ID: 41778060
When you concatenate NULL to a value the result is always NULL so you'll need to use the same solution to all variables:
INSERT INTO DEBUG(SQL) VALUES ( 'UPDATE  table1
		(
(...)
	'''+ISNULL(@DurationofStay, 'NULL')+''' )
	'''+ISNULL(@Extendedto, 'NULL')+''' )

Open in new window

1
 

Author Comment

by:RIAS
ID: 41778065
Ok ,thanks
0

Featured Post

[Webinar] Disaster Recovery and Cloud Management

Learn from Unigma and CloudBerry industry veterans which providers are best for certain use cases and how to lower cloud costs, how to grow your Managed Services practice in IaaS clouds, and how to utilize public cloud for Disaster Recovery

Question has a verified solution.

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

In this article I will describe the Detach & Attach method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function

920 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

13 Experts available now in Live!

Get 1:1 Help Now