execute(@str_sql)   @str_sql为存储过程中的一个SQL语句
怎么能判断是执行了修改还是查询或者删除操作不能用@@rowcount
因为select语句也能产生@@rowcount

解决方案 »

  1.   

    可以判断left(@str_sql,6)是否为insert,update或delete
      

  2.   

    在@str_sql 语句中加入,这样用
    create table ta(id int)
    insert ta select 1
    declare @sql_sql varchar(1000)
    set @sql_sql='insert ta select * from ta print ''插入''+rtrim(@@rowcount) update ta set id=5 
    print ''更新''+rtrim(@@rowcount)'
    exec(@sql_sql)
      

  3.   

    execute(@str_sql)   中的@str_sql是给客户使用的,,将客户从ASP页面写入的SQL语句传入存储过程,因为不止针对一个表,而且 @str_sql 是由客户写的。我们不能再修改里面的@str_sql。。没有想到难度这么大呀
      

  4.   

    用sqlserver的事件查探器好了,呵呵
    选择跟踪相应的数据库,显示所有操作详细语句。
      

  5.   

    用PATINDEX搜索@sqlif 有'insert' 或 'into'
       是新增
    else if 有 'update' 
       是修改
    else
       是查询