各位大侠,在存储过程里写函数,怎么实现,最好给个例子,小弟在此谢过。

解决方案 »

  1.   

    create proc p_test
      @fn_name sysname
    as
    exec('if object_id('''+@fn_name+''')>0 drop function ['+@fn_name+']')
    exec('
    create function ['+@fn_name+'](
    @a int

    returns int 
    as 
    begin
      ......
      return
    end'
    )
      

  2.   

    才一下create proc p_test
    as
    beginexec ( 'create function f_test (@s varchar(10))
    returns varchar(20)
    as 
    begin
    return @s+@s
    end
    '  )
    end
    goexec p_test
    go
    select dbo.f_test('sdf')
      

  3.   

    按2,3楼的方法,
    使用exec觉得一股情况下无什么必要,倒是对LZ为何有此需求感到奇怪,请LZ说说具体情况?
      

  4.   

    /*
    记得,这句话在正式执行之前,只需要执行一次。
    truncate table [TB1]
    */--下面这个程序。@page是当前执行的页数,从0开始,@num是每次执行的行数,设定之后不许更改
    --@num只要大于0即可,随便多少--@page从0开始,每次加1
    --执行成功看结果,正常成功是结果和@num的值一样,当返回结果小于@num时,表示所有记录执行完毕
    Pexec @page = 1,@num = 自己设定数值
    select * from [TB1] order by id
    ------不准重复执行,否则就象下面一样乱了
    (函数语句当然写在储存过程中)
      

  5.   

    给你给个最简单的实例吧--要求:创建存储过程,向student中插入一条记录
    if exists(select [name] from sys.all_objects where [name] = 'addStudent' and type = 'P')
     drop procedure addStudent
    --上面两句代码是判断数据库中是否存在名为addStudent的存储过程,存在就删除
    go
    --创建存储过程
    create procedure addStudent
    as
    begin
    insert into student values(071127,'张三',2,'男',2005-120-02,42,'三好学生')
    end
    --执行存储过程
    execute addStudent 
    --这样就执行了一句insert语句,存储过程,就是把大段的T—sql语句封装成一个函数,用execute调用就执行
    --T-SQL语句,就像C#里面调用方法一样
      

  6.   

    还有
    execute 可以简写成exec
    procedure 也可以简写成 proc
      

  7.   

    1.open-sql 2k enterprise Manager(打開sql企業管理器多得很.)
    2.open sql db ---Master
    3.open  -----user defined functionseg:
    create function fn_MSFullText()
    returns @retTab table(LCID int)
    as
    begin
       declare @tempLang table(LCID int)
       insert @tempLang values (2052)  /* Chinese_Simplified */
       insert @tempLang values (1028)  /* Chinese_Traditional */
       insert @tempLang values (1043)  /* Dutch */
       insert @tempLang values (2057)  /* English_UK */
       insert @tempLang values (1033)  /* English_US */
       insert @tempLang values (1036)  /* French */
       insert @tempLang values (1031)  /* German */
       insert @tempLang values (1040)  /* Italian */
       insert @tempLang values (1041)  /* Japanese */
       insert @tempLang values (1042)  /* Korean */
       insert @tempLang values (0)     /* Neutral */
       insert @tempLang values (1053)  /* Swedish_Default */   insert @retTab select * from @tempLang
    return
    end