下列语句在函数内有效: 赋值语句。
TRY...CATCH 语句以外的流控制语句。
定义局部数据变量和局部游标的 DECLARE 语句。
SELECT 语句,其中的选择列表包含为局部变量分配值的表达式。
游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。只允许使用以 INTO 子句向局部变量赋值的 FETCH 语句;不允许使用将数据返回到客户端的 FETCH 语句。
修改 table 局部变量的 INSERT、UPDATE 和 DELETE 语句。
调用扩展存储过程的 EXECUTE 语句。

解决方案 »

  1.   

    create FUNCTION [dbo].[isInteger]
    (
    @Param1 varchar(80)
    )
    RETURNS int
    AS
    begin
    declare @returnInt int
    if isnumeric(@Param1)=1 and floor(@Param1)=@Param1 
      set @returnInt=1
    else
      set @returnInt=0
    return @returnInt
    END 
      

  2.   


    兄弟多谢,不过你这样写在 调用的时候会报错,从数据类型转换为float时出错!
      

  3.   

    create FUNCTION [dbo].[isInteger]
    (
    @Param1 varchar(80)
    )
    RETURNS int
    AS
    begin
    declare @returnInt int
    if isnumeric(@Param1)=1 
     begin 
     if floor(@Param1)=@Param1 
      set @returnInt=1
     end
    else
      set @returnInt=0
    return @returnInt
    END select [dbo].[isInteger]('a')
    /*
    -----------
    0(1 行受影响)
    */select [dbo].[isInteger]('80')
    /*
    -----------
    1(1 行受影响)
    */
      

  4.   

    05没错的alter FUNCTION [dbo].[isInteger](@Param1 varchar(80))
    RETURNS int
    AS
    begin
    declare @returnInt int
    set @returnInt=0
    if isnumeric(@Param1)=1 
    if floor(@Param1)=@Param1 
    set @returnInt=1
    return @returnInt
    END select dbo.isInteger('aaa')把isnumeric和floor分2行写,看看
      

  5.   

    htl258 的结果还是有报错的情况,从数据类型varchar转换为float时出错!