sqlserver利用sp_oa系列存储过程调用xml+xsl eval输出运算结果的一个例子。
来源:互联网 发布:淘宝明星周边店 编辑:程序博客网 时间:2024/05/20 03:07
CREATE FUNCTION getEval(@s VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @xmlDoc INT,@xslDoc INT,@err INT,@outValue INT,@outStr VARCHAR(100)
DECLARE @str VARCHAR(1000),@xsl VARCHAR(8000)
SET @str='<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>'+@s+'</root>'
SET @xsl='<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<xsl:script>
function eVal(node)
{
return eval(node.selectSingleNode("//root").text);
}
</xsl:script>
<xsl:eval>eVal(this)</xsl:eval>
</xsl:template>
</xsl:stylesheet>'
--SELECT @str,@xsl
EXEC @err=sp_OACreate 'Msxml2.DOMDocument.3.0',@xmlDoc OUT
EXEC @err=sp_OASetProperty @xmlDoc,'async','false'
EXEC @err=sp_OAMethod @xmlDoc,'LoadXML',@outValue OUT,@str
EXEC @err=sp_OACreate 'Msxml2.DOMDocument.3.0',@xslDoc OUT
EXEC @err=sp_OASetProperty @xslDoc,'async','false'
EXEC @err=sp_OASetProperty @xmlDoc,'resolveExternals','false'
EXEC @err=sp_OAMethod @xslDoc,'LoadXML',@outValue OUT,@xsl
EXEC @err=sp_OAMethod @xmlDoc,'transformNode',@outStr OUT,@XslDoc
EXEC @err=sp_OADestroy @xmlDoc
EXEC @err=sp_OADestroy @xslDoc
RETURN @outStr
END
GO
CREATE TABLE tb(id INT IDENTITY(1,1),v VARCHAR(1000))
GO
INSERT tb SELECT '1*2+3'
UNION ALL SELECT '2+3*5'
UNION ALL SELECT '(2+3)*5'
GO
SELECT id,v,dbo.getEval(v) FROM tb
GO
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @xmlDoc INT,@xslDoc INT,@err INT,@outValue INT,@outStr VARCHAR(100)
DECLARE @str VARCHAR(1000),@xsl VARCHAR(8000)
SET @str='<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>'+@s+'</root>'
SET @xsl='<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<xsl:script>
function eVal(node)
{
return eval(node.selectSingleNode("//root").text);
}
</xsl:script>
<xsl:eval>eVal(this)</xsl:eval>
</xsl:template>
</xsl:stylesheet>'
--SELECT @str,@xsl
EXEC @err=sp_OACreate 'Msxml2.DOMDocument.3.0',@xmlDoc OUT
EXEC @err=sp_OASetProperty @xmlDoc,'async','false'
EXEC @err=sp_OAMethod @xmlDoc,'LoadXML',@outValue OUT,@str
EXEC @err=sp_OACreate 'Msxml2.DOMDocument.3.0',@xslDoc OUT
EXEC @err=sp_OASetProperty @xslDoc,'async','false'
EXEC @err=sp_OASetProperty @xmlDoc,'resolveExternals','false'
EXEC @err=sp_OAMethod @xslDoc,'LoadXML',@outValue OUT,@xsl
EXEC @err=sp_OAMethod @xmlDoc,'transformNode',@outStr OUT,@XslDoc
EXEC @err=sp_OADestroy @xmlDoc
EXEC @err=sp_OADestroy @xslDoc
RETURN @outStr
END
GO
CREATE TABLE tb(id INT IDENTITY(1,1),v VARCHAR(1000))
GO
INSERT tb SELECT '1*2+3'
UNION ALL SELECT '2+3*5'
UNION ALL SELECT '(2+3)*5'
GO
SELECT id,v,dbo.getEval(v) FROM tb
GO
/*1 1*2+3 5
2 2+3*5 17
3 (2+3)*5 25 */
DROP TABLE tb
GO
DROP FUNCTION getEval
GO
2 2+3*5 17
3 (2+3)*5 25 */
DROP TABLE tb
GO
DROP FUNCTION getEval
GO
- sqlserver利用sp_oa系列存储过程调用xml+xsl eval输出运算结果的一个例子。
- 通过一个实际的例子学习SQLServer存储过程
- 通过一个实际的例子学习SQLServer存储过程
- xsl:script与函数调用输出xsl:eval应用示例
- SQLSERVER 存储过程调用存储过程,如何得到输出参数
- 一个xsl的例子
- 一个XSL的例子
- sqlserver 存储过程例子
- 在一个存储过程A中调用另外一个存储过程B返回的结果集
- SQLSERVER,不使用BCP,把查询结果输出为txt文本文件的存储过程
- 一个JAVA调用存储过程的小例子
- JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)
- SQLServer和ORACLE 存储过程的调用(返回结果集)
- java 调用SqlServer分页存储过程的,返回多个结果集
- java 调用SqlServer分页存储过程的,返回多个结果集
- SQLServer--带输出参数的存储过程
- 利用游标返回结果集的的例子(Oracle 存储过程)
- 利用游标返回结果集的的例子(Oracle 存储过程)
- 2008,展望IT未来
- 整理JAVA学习笔记 JAVA基础需要掌握重点
- 使用 python 开发 Web Service
- js去掉字符串全部空格
- NT环境下进程隐藏的实现(转)
- sqlserver利用sp_oa系列存储过程调用xml+xsl eval输出运算结果的一个例子。
- 解决MSN登陆死机
- eclipse 插件开发经验积累
- 正则表达式30分钟入门教程
- Jwork框架PHP第二版
- Shell编程
- .net多线程编程的经验(收藏转帖http://www.cnblogs.com/hzuIT/articles/924757.html)
- 屏蔽MSN广告
- Oracle数据导入导出imp/exp命令