回 帖 发 新 帖 刷新版面

主题:存储过程

这是一个存储过程里的

as后面的SQL语句


if @cTableName <>'' and @cNy <> ''
    begin
        set @sqlStr = 'delete from ' + @cTableName + ' where ny = '+"'" +@cNy+"'"    
         exec(@sqlStr)           
        
        end


问题:
1.不明白""是干什么的,SQL不都是用''里面是字符串的吗?
2.set语句不明白,为什么delete from用''

3.exec不是执行存储过程的吗,为什么用在这里

回复列表 (共3个回复)

沙发

我的意见:
1:(1)如果字符串包含单引号,则需要在单引号前再增加一个单引号(2)如果使用双引号,嵌入的单引号不需要用两个单引号来表示。显然这里属于第(2)种。知识把@cNy的值作为一个字符赋给ny而已。。
2:set 是为字符变量赋值,完全可以换成select,用''的目的是把几个字符串连接在一起,形成一个字符串。
3:在这里,@sqlStr就相当于一个存储过程,它代表了上面的delete 那个语句。
也就是说,完全可以在一个存储过程里执行另外一个存储过程。

板凳

那么@sqlStr=dele from 传入的表名 where ny='当前日期'

是这样吧

3 楼

对。

我来回复

您尚未登录,请登录后再回复。点此登录或注册