工作日志 6/2/2014 - SQL的stored procedure

今天是我生日,今年的生日是在工作中度过的,预示着这一岁的好势头吧!

今天起来fix这个parameterization的问题,按理说,如果用了它,就不该出现‘ unmatched quotes错误, 我就看了一下code,从C#里面看没有太多问题,就是把参数输进去,输进去的string里面带有单引号,到了SQL stored procedure,老头用的是这样的语句:

IF LEN(@NewSiteNameTrim) > 0
              BEGIN
                     SET @sSet = 'SET SiteName = ''' + @NewSiteNameTrim + ''' '
              END
而我之前看的材料都是直接在引号里面加参数的@symbol,用不着再加单引号啊,这不是多此一举嘛,这样出来的结果还是两个单引号啊,不能够escape啊。于是我改成了:
IF LEN(@NewSiteNameTrim) > 0
              BEGIN
                     SET @sSet = 'SET SiteName =  @NewSiteNameTrim  '
              END
把他放到SQL一试,结果不行。。。。。

很奇怪的是,如果是insert 这样的语句,比如:

INSERT INTO vidConfSites 
              (
                     SiteName,
                     AlternateName, 
                     DeliveryMode 
              ) 
              VALUES 
              (
                     @SiteNameTrim, 
                     @AlternateNameTrim,
                     @DeliveryModeTrim 
              )
是可以的,但如果是string 连接,如上边的,只能读出来@newsitenametrim这样的content,并不把它替换成parameter。

可能是它在SQL的stored procedure里面,如果在外面的vb或c#,那应该在后边加一个addParameter()method添加parameter的内容, 可是不在于是就奇怪了。

这样的解决方法,就是要手动的把单引号替换成两个单引号,这个工作不能在c#或vb外面做,因为insertion还好好的,如果替换了,用户输入的单引号就变成了双引号,不对,所以要在stored procedure里面的各个method里面改,用到了replace(@NewSiteNameTrim,'''','''''')语句,这样在sql测试成功,在外部测试便开始有些奇奇怪怪的input。

debug了半天,原来发现是因为在c#里string本来就被替换了单引号,到了stored procedure会两次替换,这是老头写的code啊,这岂不是坑我,于是我快崩溃了,花了一下午的时间把这个屁股上的屎给擦了,发了testing request邮件,这么个app就算完成。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WARNING: /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308:414 exit 1 from 'exit 1' WARNING: Backtrace (BB generated script): #1: bbfatal, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 414 #2: do_kernel_metadata, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 251 #3: do_kernel_configme, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 152 #4: main, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 459 Backtrace (metadata-relative locations): #1: bbfatal, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/core/meta/classes/logging.bbclass, line 60 #2: do_kernel_metadata, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/core/meta/classes/kernel-yocto.bbclass, line 159 #3: do_kernel_configme, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/core/meta/classes/kernel-yocto.bbclass, line 395 ERROR: Logfile of failure stored in: /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/log.do_kernel_configme.126308 NOTE: recipe linux-xlnx-5.10+git999-r0: task do_kernel_configme: Failed ERROR: Task (/home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2021.1.bb:do_kernel_configme) failed with exit code '1' NOTE: recipe libgcc-initial-10.2.0-r0: task do_configure: Succeeded NOTE: Tasks Summary: Attempted 545 tasks of which 0 didn't need to be rerun and 1 failed. ERROR: bitbake failed to configure u-boot ERROR: Failed to config u-boot. Check the /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/config.log file for more details...
最新发布
05-19

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值