存储过程中不能有USE语句



我正在尝试创建一个存储过程,以便稍后在插入语句中使用。以下是我试图在过程中进行的以下查询:

USE live12
SELECT 
ca.value('(/CA/@ID)[1]','VARCHAR(MAX)'),
ca.value('(/CA/@value)[1]', 'VARCHAR(MAX)'),
ca.value('(/CA/@Date)[1]', 'VARCHAR(MAX)')
FROM log

我读到我不能在存储过程中使用"use"语句,但是当我去掉它时,SELECT代码会用红色下划线,因为它不知道ca列存在,而该日志是一个表。我该怎么解决这个问题?

你能这样写吗?

SELECT 
ca.value('(/CA/@ID)[1]','VARCHAR(MAX)'),
ca.value('(/CA/@value)[1]', 'VARCHAR(MAX)'),
ca.value('(/CA/@Date)[1]', 'VARCHAR(MAX)')
FROM live12.dbo.log

您需要在live12数据库中创建存储过程。

使用别名:

SELECT 
x.ca.value('(/CA/@ID)[1]','VARCHAR(MAX)'),
x.ca.value('(/CA/@value)[1]', 'VARCHAR(MAX)'),
x.ca.value('(/CA/@Date)[1]', 'VARCHAR(MAX)')
FROM live12.dbo.log x
-- OR:
-- FROM live12.dbo.log AS x

最新更新