Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL函数错误[在函数中无效使用副作用运算符“select”)_Sql Server - Fatal编程技术网

Sql server SQL函数错误[在函数中无效使用副作用运算符“select”)

Sql server SQL函数错误[在函数中无效使用副作用运算符“select”),sql-server,Sql Server,有人能帮我在sql server 2012中创建函数吗?我是sql新手,它显示错误[在函数中无效使用副作用运算符'select' CREATE FUNCTION Get_RearEnd_Outflow( @I_TXN_ID INT) RETURNS int AS BEGIN DECLARE @V_COUNT INT SELECT COUNT(*) INTO @V_COUNT FROM IRR_CHARGES_M RETURN @V_COUNT END 试着这样做: CREATE F

有人能帮我在sql server 2012中创建函数吗?我是sql新手,它显示错误[在函数中无效使用副作用运算符'select'

CREATE FUNCTION Get_RearEnd_Outflow( @I_TXN_ID INT)
RETURNS int
AS BEGIN
  DECLARE @V_COUNT INT
  SELECT COUNT(*) INTO @V_COUNT FROM IRR_CHARGES_M
  RETURN @V_COUNT
END

试着这样做:

CREATE FUNCTION Get_RearEnd_Outflow( @I_TXN_ID INT) RETURNS int AS BEGIN DECLARE @V_COUNT INT; SET @V_COUNT = (SELECT COUNT(*) FROM IRR_CHARGES_M); RETURN @V_COUNT; END 应该是

CREATE FUNCTION Get_RearEnd_Outflow( @I_TXN_ID INT)
RETURNS int
AS BEGIN
  DECLARE @V_COUNT INT
  SELECT @V_COUNT = (SELECT COUNT(*) FROM IRR_CHARGES_M)
  RETURN @V_COUNT
END
然而,在T-SQL中分配变量

  SET @V_COUNT = (SELECT COUNT(*) FROM IRR_CHARGES_M)
编辑2:对于多个分配,您可以使用选择

用于多重ASIN

SELECT  @variableOne = someColumn,  @variableTwo = someColumn from tblTable
编辑:从MSDN链接关于slect

对于分配变量,我们建议您使用SET@local\u variable而不是SELECT@local\u variable。有关更多信息,请参见设置@local_变量

或使用:

CREATE FUNCTION Get_RearEnd_Outflow()
     RETURNS int
     AS
     BEGIN
    return  (SELECT COUNT(*) FROM IRR_CHARGES_M)

    END
     GO

尾端流出。。。不是我想使用的函数:-+1表示正确答案。但是为什么设置是更好的方式呢?我能想到的唯一区别是,当您将变量指定给返回多行的select时,set将引发一个错误,select将变量指定给第一行。我添加了MSDN页面中的引号,并且set是ANSI to set variable,而select不是。你们也可以看看这个链接,亲爱的,当SQL select查询在上面的cREATE函数中有很多列时,我该怎么办STATEMENT@user1831355对于多列,必须使用SELECT。EDIT2是否回答了您的问题?亲爱的,当SQL select查询在上述创建函数语句中有许多列时,我该怎么办?不确定您的确切意思,但您可以用select替换select COUNT*,并用包含要计算的值的任何列替换。
CREATE FUNCTION Get_RearEnd_Outflow()
     RETURNS int
     AS
     BEGIN
    return  (SELECT COUNT(*) FROM IRR_CHARGES_M)

    END
     GO