【问题标题】:Executing a stored procedure using a Repeater with custom query in Kentico在 Kentico 中使用带有自定义查询的中继器执行存储过程
【发布时间】:2018-08-07 14:11:11
【问题描述】:

我正在尝试调用一个接受 3 个输入(状态、邮编和距离)的存储过程。提交搜索后,输入的值将被放入查询字符串中,这就是我试图让它们传递给存储过程的方式。

我决定使用带有自定义查询的中继器,在我的查询中我设置如下:

exec Republic.BranchesNearZip @zip = '{%zipCode%}', @state = '{%state%}', @miles = '{%distance%}'

通过转换。

当我检查我的检查员时,我看到了响应中的值,但我不断收到“未找到数据”,但如果我将这些值硬编码到自定义查询中,它似乎可以工作。

【问题讨论】:

    标签: stored-procedures repeater kentico


    【解决方案1】:

    它不适用于开箱即用的 {% ... %} 之类的宏,这已经在here 中讨论过了。你需要使用sql查询和sql macros,你不能使用带参数的stor proc

    【讨论】:

    • 天哪,谢谢我看到这篇文章,不小心把它关掉了,再也找不到了。
    • 所以我查看了那篇文章并查看了您发布的屏幕截图。我看到这些值被硬编码到 WHERE 子句和 ORDER BY 中。如果我有多个从查询字符串中获取的需要在 WHERE 子句中设置的参数怎么办。例如 zip、状态和距离。
    • 是的,但这是某种黑客行为......你在这里并没有真正赢得任何东西,而且它让人有点不清楚。 Teroretically 你可以这样做: exec Republic.BranchesNearZip ##WHERE## 然后放入 where 文本框:
    【解决方案2】:

    您不能在查询本身中使用宏。但是,您仍然可以将宏传递给查询并将它们传递给您的存储过程。

    以以下查询为例(注意:确保查询类型为“查询文本”):

    DECLARE @NumOne int,
            @NumTwo int;
    
    SELECT ##COLUMNS##
    
    EXEC [dbo].[spAddTwoNumbers] @NumOne, @NumTwo
    

    然后在我们转发器的Select columns属性中:

    @NumOne = {% return 25 %}, @NumTwo = {% return 25 %}
    

    查询解析器将生成以下查询作为结果:

    DECLARE @NumOne int,
            @NumTwo int;
    
    SELECT @NumOne = 25, @NumTwo = 25
    
    EXEC [dbo].[spAddTwoNumbers] @NumOne, @NumTwo
    

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 2021-04-01
      • 2021-07-03
      • 1970-01-01
      相关资源
      最近更新 更多