2009-03-05 17 views
0

Ben bir ASP sayfasında aşağıdaki kodu var: Bazı $ .getJSON kullanarak, başka bir sayfadan ajax ile bu sayfayı çağırmak olarak() içerir hariç bu sayfada başka hiçbir kod yokturASP (.NET değil): sorgu dizesinde saklı yordama parametresi olarak null parametresi mi gönderiliyor?

<% 
    QueryToJSON(conn, "execute WebGetEmployeesPlanned'" 
    +Request.QueryString("customercode")+"', 
    '"+Request.QueryString("lang")+"', 
    '"+Request.QueryString("date")+"'").flush 
%> 

Sorun şu ki, NULL, SP için parametrelerden biri olarak nasıl gönderebileceğimi bilmiyorum. Bazen Request.QueryString ("customercode") boş olacaktır. SP'yi bu parametreyi NULL olarak görmek için yukarıdaki kodda bunu nasıl koyabileceğimi bilmem gerekiyor.

SP koduna erişimim var, böylece boş bir dizeyi null değerine dönüştürmek için o taraftaki bir şeyi değiştirebiliyorum.

Şimdiden teşekkürler.

cevap

1

Doğru yoldasınız. Sorgu dizesi parametreleri sadece dizelerdir. Dolayısıyla, göndereceğiniz gerçek dize değerlerinden herhangi biriyle çakışmayan NULL için bir dize temsilcisi seçmelisiniz. Boş dizgeyi "null" veya "Thomas'ın özel null bayrağı" kullanabilirdiniz; önemli değil. Bir sorgu dizesi parametresinde NULL "resmi" temsili yoktur.

Güncelleştirme: Hayır, saklı yordamın bu çeviriyi yürütecek yer olduğunu sanmıyorum. Bunun nedeni, "string" parametresindeki null dizgisi dizgisini "real" null değerine dönüştürmeniz gerçeği, sorgu dizesi parametresine ne yazabileceğinizin sınırlamaları nedeniyle yapmanız gereken bir şeydir. Bu dönüştürmeyi saklı yordamda yapmak, yordamı, sorgu dizesinin bir dereceye kadar "farkında" olmasını sağlar ve bu doğru hissetmez. Bunun yerine, web bilincinde olması beklenen aspx işaretlemesinde yapardım.

QueryToJSON(conn, "execute WebGetEmployeesPlanned'" 
+Request.QueryString("customercode")+"', 
'"+Request.QueryString("lang")+"', 
'"+Request.QueryString("date")+"'").flush 

için:

QueryToJSON(conn, "execute WebGetEmployeesPlanned " 
    + (string.IsNullOrEmpty(Request.QueryString("customercode")) ? 
      "null, '" 
      : 
      "'" + Request.QueryString("customercode") + "','") 
    +Request.QueryString("customercode")+"', 
    '"+Request.QueryString("lang")+"', 
    '"+Request.QueryString("date")+"'").flush 
Burada String.format() veya bir parametreli sorguya değişiklik ...

Değişim kaynağı örneği (denenmemiş, bu yüzden, daha iyi benim sözdizimi hataları düzeltmek veya var

+0

Ve sonra SP de bunu işlemek mi? SP'in geri kalanını yürütmeden önce MS SQL'de bu dize temsilcisini null değerine dönüştürme konusunda bir şans var mı? Benim T-SQL bilgim çok sınırlıdır :-) –

+0

Güncellenmiş örneğe bakın. –

+0

Zaman ayırdığınız için çok teşekkürler, örneğiniz aradığım şeyi içeriyor. –

İlgili konular