SQLサーバー2012で関数を作成するのを手伝ってくれる人はいますか?SQLの新しいIMエラーが表示されます[関数内での副作用演算子「選択」の無効な使用]
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
SQLサーバー2012で関数を作成するのを手伝ってくれる人はいますか?SQLの新しいIMエラーが表示されます[関数内での副作用演算子「選択」の無効な使用]
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
SELECT @V_COUNT = (SELECT COUNT(*) FROM IRR_CHARGES_M)
RETURN @V_COUNT
END
ただし、SET はT-SQL で変数を割り当てるためのより良い方法です
SET @V_COUNT = (SELECT COUNT(*) FROM IRR_CHARGES_M)
編集2:複数の割り当ての場合、使用できますSELECT
複数のアサシンの場合
SELECT @variableOne = someColumn, @variableTwo = someColumn from tblTable
編集: selectに関するMSDNリンクから
変数を割り当てるには、SELECT @local_variable の代わりに SET @local_variable を使用することをお勧めします。詳細については、SET @local_variable を参照してください。
CREATE FUNCTION Get_RearEnd_Outflow()
RETURNS int
AS
BEGIN
DECLARE @COUNT INT;
SET @COUNT =(SELECT COUNT(*) FROM IRR_CHARGES_M);
return @COUNT
END
GO
または使用:
CREATE FUNCTION Get_RearEnd_Outflow()
RETURNS int
AS
BEGIN
return (SELECT COUNT(*) FROM IRR_CHARGES_M)
END
GO
次のようなことを試してください:
CREATE FUNCTION Get_RearEnd_Outflow( @I_TXN_ID INT) 戻り値 int はじめに DECLARE @V_COUNT INT; SET @V_COUNT = (SELECT COUNT(*) FROM IRR_CHARGES_M); RETURN @V_COUNT; 終わり