小编vis*_*hal的帖子

如何在存储过程sql server 2005中使用for循环

我是 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)

t-sql stored-procedures sql-server-2005

3
推荐指数
1
解决办法
4万
查看次数

找出列是否包含每个组的两个不同值

我想选择满足同一列的两个条件的行.下面是表模式.

安全表

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)

sql t-sql sql-server relational-division

-2
推荐指数
1
解决办法
85
查看次数