ASP(不是.NET):将null作为参数发送到查询字符串中的存储过程?

时间:2009-03-05 13:44:32

标签: jquery stored-procedures asp-classic

我在ASP页面上有以下代码:

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

此页面上没有其他代码,除了一些包含,因为我使用$ .getJSON()

从另一个页面调用此页面的ajax

问题在于我不知道如何将NULL作为参数之一发送给SP。

有时Request.QueryString(“customercode”)将为空。我需要知道如何将其放在上面的代码中,以使SP将此参数视为NULL。

我可以访问SP代码,因此我可以更改该方面的内容以将空字符串转换为null。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。查询字符串参数只是字符串。因此,您必须为NULL选择一个字符串代表,这不会与您要发送的任何实际字符串值冲突。你可以使用空字符串,“null”或“Thomas的特殊空标志”;没关系。查询字符串参数中没有NULL的“官方”表示。

更新:不,我认为存储过程不是处理此转换的地方。原因是您要将查询字符串参数中的null的字符串表示形式转换为“实际”空值,这是您必须要做的事情,因为您可以将其放入查询字符串参数中。在存储过程中执行此转换将使程序在某种程度上“感知”查询字符串,并且感觉不对。相反,我会在aspx标记中执行此操作,该标记应该是Web感知的。这是一个源代码示例(未经测试,因此修复我的语法错误,或者更好的是,更改为string.Format()或参数化查询......

变化:

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

为:

QueryToJSON(conn, "execute WebGetEmployeesPlanned "
    + (string.IsNullOrEmpty(Request.QueryString("customercode")) ?
          "null, '"
          :
          "'" + Request.QueryString("customercode") + "','")
    +Request.QueryString("customercode")+"', 
    '"+Request.QueryString("lang")+"', 
    '"+Request.QueryString("date")+"'").flush