小编Sai*_*aif的帖子

如何读取存储过程输出并将其作为列表返回

我有一个具有复合键的表,以便从两个不同的表中检索数据。我已经创建了存储过程来执行此操作并且工作正常:

存储过程:

ALTER PROC dbo.spp_adm_user_user_group_sel
AS 
BEGIN 
    SET NOCOUNT ON

    SELECT 
        g.name AS Group_Name, u.fullname, u.designation, 
        u.email, u.mobile 
    FROM 
        TBL_ADM_USER_GROUP g, TBL_ADM_USER u
    WHERE 
        g.id = u.group_id 
        AND (g.deleted IS NULL OR g.deleted <> 1)
END
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

Group_name  fullname    designation  email          mobile
Alex        fffffffff   Engineer     sss@mail.come  3333333333
Jon        hhhhhhhhh    programmer   hh@mail.com    020202028347
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,存储过程没有任何参数。如何使用 C# 读取此输出并将其作为列表返回?

代码:

public List<string> GetData()
{
    using (SqlConnection con = new SqlConnection(Global.Config.ConnStr))
    {
        string group;

        DataTable dt = new DataTable();
        List<string> details = new List<string>();

        SqlCommand …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server

5
推荐指数
1
解决办法
2万
查看次数

更新触发器后处理多行

我创建了触发器来记录所有更新的行,无论是一行还是多行,并将更新的行记录到另一个表中.触发器正常工作,有一条记录但是当我更新整个表时,例如:update TBL_ADM_USER_GROUP set name = '123'只记录一条记录TBL_TestTable?为什么只有一行登录TBL_TestTable以及如何启用此触发器来记录所有更新的行?

触发:

CREATE TRIGGER [dbo].[Group_Update]
ON [dbo].[TBL_ADM_USER_GROUP]

 AFTER UPDATE
  AS
   BEGIN

   SET NOCOUNT ON;

   DECLARE @userid INT
   DECLARE @name nvarchar(1000)

   SELECT @userid = i.changer_user_id from inserted i; 
   select @name = i.name from inserted i;

   INSERT INTO TBL_TestTable
   VALUES (CONCAT('Group "' ,@name,'" is updated'), 'GROUP', 'Update', SYSDATETIME(), @userid)

END
Run Code Online (Sandbox Code Playgroud)

sql sql-server

0
推荐指数
1
解决办法
33
查看次数

标签 统计

sql ×2

sql-server ×2

c# ×1