函数内执行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
展开
 我来答
尾穰邗杰
2019-10-14 · TA获得超过3978个赞
知道大有可为答主
回答量:3052
采纳率:33%
帮助的人:239万
展开全部
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语句就被批量的执行了。
vinson_shen
推荐于2016-09-08 · TA获得超过2503个赞
知道小有建树答主
回答量:960
采纳率:100%
帮助的人:0
展开全部
其实你这你都知道用函数实现不了的,因为你的输入参数@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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seekel
2010-07-07 · TA获得超过201个赞
知道答主
回答量:199
采纳率:0%
帮助的人:169万
展开全部
Exec后面可跟存储过程或函数,用于调用其他的存储过程或函数
函数中间的sql语句,就直接写就可以了
例如:
BEGIN
RETURN(SELECT 字段 FROM 表名 WHERE 条件)
END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛一刀墨刻
2010-07-07 · TA获得超过275个赞
知道小有建树答主
回答量:583
采纳率:0%
帮助的人:476万
展开全部
exec(@SQL)
就可以执行字符串里的sql语句了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一橙二白三蓝
2010-07-07
知道答主
回答量:79
采纳率:0%
帮助的人:22.9万
展开全部
用什么语言
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式