不了解这个PERL中的EVAL函数的作用,
不知道可以实现什么功能,
你先说说看~

解决方案 »

  1.   

    没有eval有某些情况下,exec可以理解为eval,但sqlserver中的exec并不等同高级语言里的eval.
      

  2.   

    回1楼,eval函数的作用,就是运行一个以字符串记录的表达式
    比如eval('1+3+2')就返回6
      

  3.   

    dim a,b
    a=5b=eval("a-1")
    msgbox b
    ' 4declare @a int,@b int,@s nvarchar(1000)
    set @a=5
    set @s=N'set @b=@a-1'
    exec sp_executesql @s,N'@b int output,@a int',@b output,@a
    select @b
    /*
    4
    */
      

  4.   

    exec好象是用来执行动态SQL的,我的目的是得到一个字符串记录的表达式的运算结果另,好象exec在自定义函数里也不能用,我这段代码是准备写在一个自定义的函数中的
      

  5.   

    5楼,我原来是准备用动态SQL的方式去做的,但是,函数内部不能用动态SQL,我在运行函数时,系统提示,函数内只能使用函数或扩展存储过程
      

  6.   

    服务器: 消息 557,级别 16,状态 2,过程 p_yw_jlzh,行 33
    只有函数和扩展存储过程才能从函数内部执行。
      

  7.   

    如果你的表达式有规则可循,可以自已定义函数来拆分表达式,转换后执行。如果你用2005,可以使用CLR,采用多种方式实现eval,当然如果是j#,vb.net的话,它本身就有eval. c#要自己写方式实现。如果用2000,可以使用sp_oa系列来实现自定义的eval.
      

  8.   

    至于我说的第三种情况,你可以参考
    http://blog.csdn.net/fcuandy/archive/2008/03/28/2226369.aspx这里我调用了xsl的eval.当然,你也可以调vbs或js的eval.
      

  9.   

    你看一下我那个是存储过程吗?function是不支持动态语句,但不代表不支持exec.函数中可以调用扩展存储过程,而扩展过程的调用就是靠exec
      

  10.   

    sp_oa系列不是系统存储过程么?是扩展存储过程?
      

  11.   

    我还以为sp打头的都是系统存储过程,xp打头的是扩展存储过程呢
    我去看看你提供的参考先,呵呵