创建SQLServer自定义函数报错,可是同样的代码可以创建过程! 求大神帮忙看看!!!
createfunctionget_max_item(@totalint,@g_scale_inint,@i_scale_inint,@template_idvarcha...
create function get_max_item (@total int,@g_scale_in int,@i_scale_in int,@template_id varchar,@group_id varchar,@item_id varchar )
returns int
as
begin
declare @v_count int;
declare @g_scale int;
declare @i_scale int;
declare @m_item int;
if @g_scale_in=-1
begin
select count(*) as dd into v_count from khn_configgroup where config_id=@template_id and group_id=@group_id;
end
if @v_count>0
begin
select isnull(khn_group_scale,0) as cc into g_scale from khn_configgroup where config_id=@template_id and group_id=@group_id;
end
if @g_scale<>0
begin
set @g_scale=@g_scale_in
end
if @i_scale_in=-1
begin
select count(*) as qq into v_count from P_TEMPLATE_ITEM where P_TEMPLATE_GUID=@template_id and P_GROUP_GUID=@group_id and P_ITEM_GUID=@item_id;
if @v_count>0
begin
select isnull(p_item_scale,0) as aa into i_scale from P_TEMPLATE_ITEM where P_TEMPLATE_GUID=@template_id and P_GROUP_GUID=@group_id and P_ITEM_GUID=@item_id;
end
else
begin
set @i_scale=0;
end
end
else
begin
set @i_scale=@i_scale_in;
end
begin
select round(@total*@g_scale*@i_scale/10000,1) as ww into m_item
end
return @m_item;
end
go
报错信息:
消息 443,级别 16,状态 15,过程 get_max_item,第 11 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 15 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 24 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 27 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 43 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。 展开
returns int
as
begin
declare @v_count int;
declare @g_scale int;
declare @i_scale int;
declare @m_item int;
if @g_scale_in=-1
begin
select count(*) as dd into v_count from khn_configgroup where config_id=@template_id and group_id=@group_id;
end
if @v_count>0
begin
select isnull(khn_group_scale,0) as cc into g_scale from khn_configgroup where config_id=@template_id and group_id=@group_id;
end
if @g_scale<>0
begin
set @g_scale=@g_scale_in
end
if @i_scale_in=-1
begin
select count(*) as qq into v_count from P_TEMPLATE_ITEM where P_TEMPLATE_GUID=@template_id and P_GROUP_GUID=@group_id and P_ITEM_GUID=@item_id;
if @v_count>0
begin
select isnull(p_item_scale,0) as aa into i_scale from P_TEMPLATE_ITEM where P_TEMPLATE_GUID=@template_id and P_GROUP_GUID=@group_id and P_ITEM_GUID=@item_id;
end
else
begin
set @i_scale=0;
end
end
else
begin
set @i_scale=@i_scale_in;
end
begin
select round(@total*@g_scale*@i_scale/10000,1) as ww into m_item
end
return @m_item;
end
go
报错信息:
消息 443,级别 16,状态 15,过程 get_max_item,第 11 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 15 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 24 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 27 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
消息 443,级别 16,状态 15,过程 get_max_item,第 43 行
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。 展开
展开全部
存储过程可以 你就建存储过程呗
你这个 报错很明显 函数 不让你这么干
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
你换个招试试
比如 select count(*)=@v_count as dd from khn_configgroup where config_id=@template_id and group_id=@group_id;
sqlsever函数变量如何赋值我也不是很清楚 没用过
或者用 set let
你这个 报错很明显 函数 不让你这么干
在函数内对带副作用的运算符 'SELECT INTO' 的使用无效。
你换个招试试
比如 select count(*)=@v_count as dd from khn_configgroup where config_id=@template_id and group_id=@group_id;
sqlsever函数变量如何赋值我也不是很清楚 没用过
或者用 set let
追问
重点是我这个必须要创建函数,不能创建过程啊。。。
追答
那你就看看 函数是怎么赋值的呗,你那个赋值是不对的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询