Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> przekazywanie wartości NULL do dynamicznego SQL, MS SQL
rydlik
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 9.10.2011

Ostrzeżenie: (0%)
-----


Witajcie, mam pytanie, jak przekazać wartość NULL aby została ona poprawnie wyświetlona w EXEC - dynamicznym sqlu. Mój przykład:

  1. SET QUOTED_IDENTIFIER OFF
  2. DECLARE @Radius FLOAT
  3. DECLARE @Diameter INTEGER
  4.  
  5. SET @Radius = 12.5
  6. SET @Diameter = NULL
  7.  
  8. EXEC("
  9. -- w tym wypadku wartość @Diameter jest polem pustym
  10. SELECT '"+@Radius+"' , '"+@Diameter +"'
  11. ")
  12.  
  13. -- poniższe polecenie zwraca poprawnie ponieważ nie jest w EXEC, i zwraca za parametr @Diameter wartość NULL
  14. SELECT @Radius ,@Diameter



bardzo proszę o pomoc

Ten post edytował rydlik 18.01.2014, 16:18:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
juris
post
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 12.03.2014

Ostrzeżenie: (0%)
-----


Polecałbym (jeśli już musisz stosować dynamiczny SQL) wykonywanie go za pomocą procedury sp_executesql. Dodatkowo, warto jawnie zapewnić konwersję na typ znakowy.

  1. SET QUOTED_IDENTIFIER OFF
  2. DECLARE @Radius FLOAT
  3. DECLARE @Diameter INTEGER
  4.  
  5. DECLARE @tempSQL nvarchar(1000)
  6.  
  7. SET @Radius = 12.5
  8. SET @Diameter = NULL
  9.  
  10. SET @tempSQL= 'SELECT ' + ISNULL( cast(@Radius AS varchar) ,'NULL') + ' , ' + ISNULL( cast(@Diameter AS varchar) ,'NULL') ;
  11.  
  12. exec (@tempSQL)
  13. exec sp_executesql @tempSQL


Ten post edytował juris 12.03.2014, 09:48:20
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 14:29