我有以下XML:
<per:Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.something.com/2014/11/bla/webservice.xsd"
xmlns:per="http://www.something.com/2014/11/bla/person">
<per:Initials>E.C.</per:Initials>
<per:FirstName>Erik</per:FirstName>
<per:LastName>Flipsen</per:LastName>
<per:BirthDate>1980-07-01</per:BirthDate>
<per:Gender>Male</per:Gender>
</per:Person>
Run Code Online (Sandbox Code Playgroud)
从这个xml我想在PL/SQL中提取一些数据.我想使用XMLTABLE,因为不推荐使用EXTRACT和EXTRACTVALUE函数.
我可以使用此查询提取数据:
select pers.Initials,
pers.Firstname
into lsInitials,
lsFirstname
from
XMLTABLE ('*:Person' passing pxRequest
columns Initials PATH '*:Initials',
Firstname PATH '*:FirstName'
) pers;
Run Code Online (Sandbox Code Playgroud)
我正在使用通配符作为命名空间,因为我真的不关心发送方用于命名空间的缩写,我知道无论如何获取我的数据的确切路径.
有了这段代码,我有两件事让我困惑:
编辑:
我发现当我删除元素的命名空间并使它们大写时,它可以工作.因此,列名称似乎需要匹配xml元素名称才能使其工作.我还没弄明白如何使用命名空间XML.
可运行的代码示例:
SET SERVEROUTPUT ON;
DECLARE
pxRequest xmltype := xmltype('<per:Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.something.com/2014/11/bla/webservice.xsd"
xmlns:per="http://www.something.com/2014/11/bla/person">
<per:Initials>E.C.</per:Initials>
<per:FirstName>Erik</per:FirstName>
<per:LastName>Flipsen</per:LastName>
<per:BirthDate>1980-01-01</per:BirthDate>
<per:Gender>Male</per:Gender>
</per:Person>');
lsInitials varchar2(100);
lsFirstname varchar2(100);
begin
select pers.Initials,
pers.Firstname
into lsInitials,
lsFirstname
from
XMLTABLE ('*:Person' passing pxRequest
columns Initials PATH '*:Initials', …Run Code Online (Sandbox Code Playgroud) 我目前正在开始一个项目的工作,我将不得不根据数据库中的几个表编写代码(pl/sql)来导出大型XML文件.
导出文件可能会变得非常大,可能包含多达700,000个客户(包括他们的地址,订单,电话号码等).
我想知道是否有人对这方面的最佳方法有一些提示.我显然可以在其中写出丢失XMLELEMENTS的选项,但这意味着整个文件将在内存中生成.
还有一个XML模式(XSD)可供文件必须遵守.我还想知道是否有任何方法可以将表"映射"到XML模式.
任何提示都表示赞赏.
在我的linux机器上,我将apache2作为反向代理运行,因为我想在端口8083上创建另一个Web服务器,同时也使其受密码保护.为此,我将此添加到我的apache2.conf中:
<VirtualHost *:80>
<Location / >
AuthName "Protected Area"
AuthType Basic
AuthUserFile /home/pi/.htpasswd
Require valid-user
</Location>
ProxyPass / http://localhost:8083/
ProxyPassReverse / http://localhost:8083/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力,但现在我也想用apache来服务一个网站,我想通过制作/ mysite指向/ var/www之类的东西来做到这一点,但我无法弄清楚如何做到这一点或者如果可能的话.
有任何想法吗?
我试图在TSQL中构建一个存储过程来调用Web服务.我以前在Oracle中做过这个,但在MSSQL中似乎并不那么容易.当然,有很多理由不在存储过程中执行此操作,但由于此过程仅用于每日批处理,因此性能不是太大的问题.我想要做的事情如下:向webservice发送一个全名,webservice将返回一个名称分为名字,前缀,姓氏等的名称.返回的值将需要写入表.
我在http://www.vishalseth.com/post/2009/12/22/Call-a-webservice-from-TSQL-(Stored-Procedure)找到了一个有趣的程序 - 使用-MSXML.aspx似乎完全可以做到我想要什么,但只要你在调用中添加一个主体,我就会遇到像"参数不正确"这样的错误.这篇文章也说明了这一点,显然没有简单的解决方案.我绝对需要发送请求正文.
我还阅读了很多关于使用CLI或"Web服务任务编辑器"或"SSIS"位来解决它的文章,我找不到任何关于从哪里开始的教程.现在我只有Microsoft SQL服务器管理工作室.
顺便说一下,我在SQL Server 2012上.
关于我应该采取什么方向的任何想法?
我已经找到了这个描述,看起来很干净:http://www.databasejournal.com/features/mssql/article.php/3821271/Calling-a-Web-Service-from-within-SQL-Server.htm但是,在安装visual studio 2012并创建"SQL服务器数据库项目"后,我无法在解决方案上下文菜单中选择"添加Web引用",菜单中只有这样的选项.
我正在建立的网站中有一个奇怪的问题.在有问题的页面上我使用了一些highcharts.一切正常,但渲染时间太长(约5秒).
当我用chrome检查它时,我看到这样的东西:
highcharts的8个脚本位于红色框中.很明显,问题出在那里.
为了渲染highcharts(javascript)的脚本,我创建了一个控制器和视图.我以这种方式在模板中使用它们:
{{ Html::script(url ('/highchart/gauge', [$humidityInside->sd_value , 'humidityInside', 'Luchtvochtigheid binnen','%',0,100,'#55BF3B','#DDDF0D','#DF5353'])) }}
Run Code Online (Sandbox Code Playgroud)
在高图控制器中我只是将变量发送到视图:
public function gauge($value,$divname,$chartTitle,$suffix,$minValue,$maxValue,$colorMin,$colorMed,$colorMax)
{
return view('highchart.gauge')->with(compact('value' , 'divname','chartTitle','suffix','minValue','maxValue','colorMin','colorMed','colorMax'));
}
Run Code Online (Sandbox Code Playgroud)
视图然后只是呈现javascript,将变量放在正确的位置:
$(function () {
var gaugeOptions = {
chart: {
type: 'solidgauge'
},
title: null,
pane: {
center: ['50%', '85%'],
size: '140%',
startAngle: -90,
endAngle: 90,
background: {
backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || '#EEE',
innerRadius: '60%',
outerRadius: '100%',
shape: 'arc'
}
},
tooltip: {
enabled: false
},
// the value axis
yAxis: {
stops: [
[0.1, '{{ …Run Code Online (Sandbox Code Playgroud) 在我的刀片代码中,我需要一个计数器,以便为由 foreach 循环呈现的 div 提供唯一 ID。为此,我在刀片模板中创建了一个变量,如下所示:
{{ $counter = 0 }}
Run Code Online (Sandbox Code Playgroud)
我在 html 中使用它只是输出它 {{ $counter = 0 }}
后来,我像这样增加它: {{ $counter++ }}
这一切都像一个魅力,除了{{ $counter++ }}它不仅增加变量,它还输出到视图。
有什么办法可以防止这种情况吗?
我正在尝试从Java调用Web服务。除了Web服务期望以用户名和密码以及随机数的形式提供某种安全性外,这基本上没有那么困难。当我尝试从SoapUi调用Web服务时,我看到原始消息看起来像这样:
<soapenv:Envelope xmlns:sch="http://somedomain.com/pe/ws/schema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-E70691ACBDEFEC750814238295617871">
<wsse:Username>usr</wsse:Username>
<wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
>pw</wsse:Password>
<wsse:Nonce
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
>4smQZF5KMSktEXrQc0v5yw==</wsse:Nonce>
<wsu:Created>2015-02-13T12:12:41.784Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<sch:EventSubmitRequest>
<sch:Event>
<sch:EventId>392</sch:EventId>
<sch:Recoverable>false</sch:Recoverable>
</sch:Event>
</sch:EventSubmitRequest>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
消息中显而易见的元素是用户名,密码和已创建,但让我感到困惑的是随机数。在示例中,该字段的值为4smQZF5KMSktEXrQc0v5yw ==,但是每个请求的值都不同(这很有意义,因为根据Wikipedia,随机数是仅使用一次的任意数字)。在四处搜索时,我找不到如何在Java中生成随机数的可用示例(尽管我确实在堆栈溢出时找到了一些php示例,但我无法轻松地验证它们是否起作用)。虽然我不介意自己构造该随机数,但我想知道这是否真的必要,但我有点希望这是Java中的标准功能。
以下是我正在使用的代码:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.xml.namespace.QName;
import javax.xml.soap.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class soaptest {
public static void main(String args[]) {
try {
// Create SOAP Connection
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
// Send SOAP Message to SOAP Server
String url = …Run Code Online (Sandbox Code Playgroud) 我正在尝试将XML文件加载到oracle 11g中的XMLTYPE clob中.到目前为止,我想出了这个控制文件:
LOAD DATA
INFILE 'stocknotify.xml'
append INTO TABLE order_input
(
xml LOBFILE(CONSTANT 'stocknotify.xml') TERMINATED BY EOF
)
Run Code Online (Sandbox Code Playgroud)
这个控制文件工作得很好,除了它加载XML文件7次.我想这是因为XML文件由7行组成,但是,我不知道如何阻止sql loader执行并只加载文件一次.
有任何想法吗?
我需要计算一个数字的余数除以另一个数字.例如,这些数字:
271011240311350356232122%97
当我只想在sql语句中这样做时,它就像一个魅力:
选择271011240311350356232122%97;
但是当我在varchar变量中有那个大数字时,我似乎无法完成工作.我无法将其转换为int或甚至bigint,因为它太大了.我无法将其转换为实数,因为您无法在实数上使用模运算符.
有任何想法吗...?
我似乎对PHP有一个奇怪的问题.
我已经将一堆软件从一台服务器迁移到另一台服务器.在服务器上,一些脚本与Oracle建立连接,因此能够建立连接,安装oracle客户端并使用tnsnames文件.从sql*plus连接工作.
一些脚本使用PDO,所以为此我在php.ini中启用了extension = php_pdo_oci.dll.这些脚本就像一个魅力.
其他一些脚本使用像oci_connect这样的函数,这些函数需要像php_oci8.dll这样的扩展.使用xammp(我用作apache/php/mysql包)php_oci8_12c.dll已经发送,所以我认为扩展就足够了.
启动服务器时,我在php errorlog中看到这些错误:
Unable to load dynamic library 'C:\xampp\php\ext\php_oci8_12c.dll' - The specified procedure could not be found.
Run Code Online (Sandbox Code Playgroud)
该文件位于C:\ xampp\php\ext \中,因此不应该是一个问题.在同一个目录中的其他扩展名被选中而没有任何问题.我也尝试加载php_oci8.dll,我从旧服务器上取了,但得到了完全相同的问题.
我发现类似问题的一些答案我试过没有成功: - 将dll复制到c:\ windows\system - 将php ext目录添加到系统PATH变量 - 将oracle客户端添加到系统PATH变量(已经在那里)
我正在使用的软件版本:
有任何想法吗?
让我们说一个用户正在运行一个巨大的PL/SQL脚本,由2000行组成,在那里的某个地方,有一个声明"等待"某些条件变为真.为此,使用了像这个例子的结构:
BEGIN
--Wail until 2 o clock
WHILE (to_date('06-01-2014 02:00','dd-mm-yyyy hh24:mi') > sysdate)
LOOP
DBMS_LOCK.SLEEP(60);
END LOOP;
--code to execute after 2 o clock
END;
Run Code Online (Sandbox Code Playgroud)
现在脚本中有几种这样的构造,脚本似乎永远在运行,所以用户问我它在哪里.困难在于我可以在动态性能视图中看到它正在运行,例如使用此查询:
SELECT S.USERNAME,
s.sid,
s.osuser,
t.sql_id,
sql_text
FROM v$sqltext_with_newlines t,
V$SESSION s
WHERE t.address =s.sql_address
AND t.hash_value = s.sql_hash_value
AND s.status = 'ACTIVE'
AND s.username <> 'SYSTEM'
ORDER BY s.sid,
t.piece;
Run Code Online (Sandbox Code Playgroud)
但这将返回整个脚本,而不是它当前的声明.有没有办法解决这个问题?
我是微软T-sql(使用到Oracle PL/SQL)的新手,我用一个非常简单的程序遇到了烦人的问题.
我创建了以下过程
CREATE PROCEDURE [dbo].[ele_test] @productId INT
AS
DECLARE @productCode VARCHAR(100);
DECLARE @productDescription VARCHAR(100);
DECLARE @error VARCHAR(100);
--Fetch product
IF @productId != NULL
BEGIN
SELECT @productCode = ProductCode
,@productDescription = ProductDescription
FROM d_afterpay.dbo.Product
WHERE ProductId = @productId
END
IF @@ROWCOUNT = 0
BEGIN
SET @error = 'Product not found: ' + cast(@productId AS VARCHAR(19))
RAISERROR (@error,16,1);
END
Run Code Online (Sandbox Code Playgroud)
当我以这种方式运行时:
exec ele_test 5
Run Code Online (Sandbox Code Playgroud)
我明白了:
Msg 50000, Level 16, State 1, Procedure ele_test, Line 20
Product not found. Productid : 5
Run Code Online (Sandbox Code Playgroud)
然而,当我像这样运行查询: …
我在基本类型的sugarcrm中创建了一个模块.我现在想将它的图标从默认图标更改为自定义图标.我阅读了大量有关如何操作的论坛帖子,不同于在自定义/主题/默认/图像/或主题/ mytheme/images /中放置新图标,但没有一个说出我应该将这些图像命名为什么来获取它们已接.
有任何想法吗?
我正在使用6.5.15版本(Build 1083)
oracle ×5
php ×4
plsql ×3
sql-server ×3
t-sql ×3
laravel ×2
sql ×2
apache ×1
blade ×1
clr ×1
dll ×1
highcharts ×1
java ×1
javascript ×1
jquery ×1
nonce ×1
pdo ×1
soap ×1
sql-loader ×1
sugarcrm ×1
suitecrm ×1
web-services ×1
ws-security ×1
xml ×1
xmltable ×1
xquery ×1