我是 SQL 服务器的新手。我的要求是我必须从 c# 中获取数千条记录作为 XML 文件,并从该文件中获取临时表中的数据。从表中我必须一一检查记录是否存在,然后更新其他插入。所以我写了一个存储过程,但它给了我以下错误
消息 102,级别 15,状态 1,过程 InsertIntoMyTable,第 13 行
'cast' 附近的语法不正确。
消息 102,级别 15,状态 1,过程 InsertIntoMyTable,第 18 行
“LOOP”附近的语法不正确。
消息 156,级别 15,状态 1,过程 InsertIntoMyTable,第 25 行
关键字“END”附近的语法不正确。
存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE InsertIntoMyTable
@mytable xml
AS
BEGIN
SELECT
cast(colx.query('data(PointsliceId) ') as int) as PointSliceId,
cast(colx.query('data(Pt_timestamp) ') as datetime) as Point_timestamp
cast(colx.query('data(FloatValue) ') as float) as Float_Value
INTo #TMP FROM @mytable.nodes('DocumentElement/mytable') AS Tabx(Colx)
For IDX in (select * from TMP) …Run Code Online (Sandbox Code Playgroud) 我想选择满足同一列的两个条件的行.下面是表模式.
安全表
Id RoleId CompId SecurityToken Accesstype
1 1 10 abc 2
2 1 10 xyz 2
3 12 10 abc 2
4 16 12 abc 2
5 16 12 xyz 2
6 30 13 abc 2
7 1 10 efg 2
8 1 10 lmn 0
Run Code Online (Sandbox Code Playgroud)
我想要"每个RoleID/CompID组合的所有行,其中accesstype = 2,并且有一行包含securitytoken"abc"和包含SecurityToken"xyz"的行用于该角色/ compID组合"
输出应该是
Id RoleId CompId SecurityToken Accesstype
1 1 10 abc 2
2 1 10 xyz 2
4 16 12 abc 2
5 16 12 xyz 2
Run Code Online (Sandbox Code Playgroud)