【发布时间】:2014-07-27 14:03:24
【问题描述】:
我正在尝试将我从 SQL Server 获得的一些代码转换为带有我可以传递的参数的存储过程,但我不确定如何执行此操作。我希望 URL 的 4 个字母股票代码是一个变量,以便我可以通过不同的符号,我还需要此代码作为存储过程。
GOOG 是我需要变量的地方。
http://finance.yahoo.com/webservice/v1/symbols/GOOG/quote'
--RSS FEED
DECLARE @docHandle INT;
DECLARE @xmlData XML;
DECLARE @URL NVARCHAR(255);
DECLARE @file NVARCHAR(255);
DECLARE @cmd NVARCHAR(255);
DECLARE @sql NVARCHAR(255);
DECLARE @tXML TABLE(data XML);
SET @URL = 'http://finance.yahoo.com/webservice/v1/symbols/GLUU/quote';
SET @file = 'c:\temp\quotes.xml';
-- Downloading the data
SET @cmd = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell (new-object System.Net.WebClient).DownloadFile( ''' + @URL + ''',''' + @file + ''' )'
EXEC master.dbo.xp_cmdshell @cmd, no_output
-- Loading the Downloaded File into the XML variable
SET @sql = 'SELECT BulkColumn FROM OPENROWSET( BULK ''' + @file + ''', SINGLE_BLOB ) AS a'
INSERT @tXML EXEC(@sql);
SELECT @xmlData = data from @tXML
-- Preparing the Relational Table from the XML variable
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlData;
INSERT INTO tblstockdata ([Name], [Price], [Symbol], [TS], [Type], [Volume])
SELECT * FROM OPENXML(@docHandle, N'//list/resources/resource')
WITH ( Name VARCHAR(10) 'field[@name="name"]',
Price VARCHAR(10) 'field[@name="price"]',
Symbol VARCHAR(10) 'field[@name="symbol"]',
TS VARCHAR(10) 'field[@name="ts"]',
Type VARCHAR(10) 'field[@name="type"]',
Volume VARCHAR(10) 'field[@name="volume"]');
EXEC sp_xml_removedocument @docHandle;
谢谢!
:)
【问题讨论】:
标签: sql sql-server variables procedure stock