函数内执行sql语句怎么写
想写一个自定义函数,参数是字符串的sql语句,返回的是sql语句执行的结果形如CREATEFUNCTIONTEST(@SQLVARCHAR(200))RETURNSINT...
想写一个自定义函数,参数是字符串的sql语句,返回的是sql语句执行的结果
形如
CREATE FUNCTION TEST(@SQL VARCHAR(200))
RETURNS INT
AS
BEGIN
DECLARE @RE INT
SET @SQL='SELECT 1+1'
--执行的结果赋给 @RE
RETURN @RE
END
函数中间部分不知道怎么写
用SQL SERVER exec肯定是不行的,函数里不能用exec 展开
形如
CREATE FUNCTION TEST(@SQL VARCHAR(200))
RETURNS INT
AS
BEGIN
DECLARE @RE INT
SET @SQL='SELECT 1+1'
--执行的结果赋给 @RE
RETURN @RE
END
函数中间部分不知道怎么写
用SQL SERVER exec肯定是不行的,函数里不能用exec 展开
展开全部
php中利用数组用mysql_query批量执行sql语句。
参考示例如下:
思路:这里采用一个数组.用explode
函数,将$query语句按照”;”炸开,然后循环执行即可:
$query
=
'delete
from
ecs_goods_attr
where
attr_id=11
and
goods_id=22;
insert
into
ecs_goods_attr
(goods_attr_id,goods_id,attr_id,attr_value,attr_price)values(null,33,138,"胆略",0);
update
ecs_goods
set
goods_number=10,shop_price=55
where
goods_id=33;'
$query_e
=
explode(';','$query');
foreach
($query_e
as
$k
=>$v)
{
mysql_query($query_e[$k]);
}
这样
$query语句就被批量的执行了。
参考示例如下:
思路:这里采用一个数组.用explode
函数,将$query语句按照”;”炸开,然后循环执行即可:
$query
=
'delete
from
ecs_goods_attr
where
attr_id=11
and
goods_id=22;
insert
into
ecs_goods_attr
(goods_attr_id,goods_id,attr_id,attr_value,attr_price)values(null,33,138,"胆略",0);
update
ecs_goods
set
goods_number=10,shop_price=55
where
goods_id=33;'
$query_e
=
explode(';','$query');
foreach
($query_e
as
$k
=>$v)
{
mysql_query($query_e[$k]);
}
这样
$query语句就被批量的执行了。
展开全部
其实你这你都知道用函数实现不了的,因为你的输入参数@SQL是动态的,那必须用exec执行,而函数里不能用exec。建议你用存储过程实现,示例如下:
创建存储过程:
create procedure TEST
(
@SQL NVARCHAR(200),
@RE INT output
)
AS
BEGIN
set nocount on
if exists (select * from tempdb.dbo.sysobjects where xtype='U' and id=object_id('#test'))
drop table #test
create table #test(total int)
insert into #test
exec (@SQL)
select @RE=isnull(total,0) from #test
set nocount off
END
调用示例:
declare @RE int
exec TEST 'select 1+1',@RE output
PRINT @RE
结果:
2
创建存储过程:
create procedure TEST
(
@SQL NVARCHAR(200),
@RE INT output
)
AS
BEGIN
set nocount on
if exists (select * from tempdb.dbo.sysobjects where xtype='U' and id=object_id('#test'))
drop table #test
create table #test(total int)
insert into #test
exec (@SQL)
select @RE=isnull(total,0) from #test
set nocount off
END
调用示例:
declare @RE int
exec TEST 'select 1+1',@RE output
PRINT @RE
结果:
2
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Exec后面可跟存储过程或函数,用于调用其他的存储过程或函数
函数中间的sql语句,就直接写就可以了
例如:
BEGIN
RETURN(SELECT 字段 FROM 表名 WHERE 条件)
END
函数中间的sql语句,就直接写就可以了
例如:
BEGIN
RETURN(SELECT 字段 FROM 表名 WHERE 条件)
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
exec(@SQL)
就可以执行字符串里的sql语句了
就可以执行字符串里的sql语句了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询