【发布时间】:2012-07-03 08:49:47
【问题描述】:
我是存储过程领域的新手。
我们有现有的系统和现有的存储过程,它检查用户名和 url 路径。存储过程将检查用户详细信息是否存在。如果存在则返回用户名所属的组名。
我只想为这个存储过程编写 asp.net c# 代码。传递用户详细信息和路径并将存储过程返回值返回到字符串变量中。
SQL Server 执行存储过程的链接如下
http://www.natboxservices.com/helmshore/img/pic.jpg
SQL Server 输出值的以下链接如下所示
http://www.natboxservices.com/helmshore/img/2012-07-03%2009.35.13.jpg
请注意,上面的图片组名是空的,因为我执行了输入错误的存储过程,并且在 sqlserver 中不存在该数据的组名。如果存在,它将返回组名的值,例如“管理员”或“经理”
我的问题是“如果数据存在并返回组名我想将该值传递给字符串变量”,用于分配参数并将返回值传递给字符串变量
这是我的存储过程
USE [IRC_siteadmin]
GO
/****** Object: StoredProcedure [dbo].[sp_intranet_GetSecurity] Script Date: 07/03/2012 10:05:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_intranet_GetSecurity]
@username VARCHAR(50),
@path VARCHAR(200),
@errorID INT OUTPUT
AS
BEGIN
SELECT
G.name as groupname
FROM
tbl_site_link L WITH(NOLOCK)
INNER JOIN
tbl_site_link_group LG WITH(NOLOCK)
ON
L.link_id = LG.link_id
INNER JOIN
tbl_site_group G WITH(NOLOCK)
ON
LG.group_id = G.group_id
INNER JOIN
( SELECT
group_id
FROM
tbl_site_user U WITH(NOLOCK)
INNER JOIN
tbl_site_user_group UG WITH(NOLOCK)
ON
U.user_id = UG.user_id
WHERE
[name] = @Username ) U
ON
G.group_id = U.group_id
WHERE
L.url LIKE '%'+@path+'%'
AND
(U.group_id IS NOT NULL)
UNION
SELECT
'Uber' as groupname
FROM
tbl_site_link L WITH(NOLOCK)
INNER JOIN
tbl_site_link_group LG WITH(NOLOCK)
ON
L.link_id = LG.link_id
CROSS JOIN
( SELECT
group_id
FROM
tbl_site_user U WITH(NOLOCK)
INNER JOIN
tbl_site_user_group UG WITH(NOLOCK)
ON
U.user_id = UG.user_id
WHERE
[name] = @Username
AND
group_id = 1 ) U
WHERE
L.url LIKE '%'+@path+'%'
AND
(U.group_id IS NOT NULL)
END
任何帮助表示赞赏
谢谢
【问题讨论】:
-
听说过抓屏吗?!你在用电脑工作,你给屏幕拍照!?!
-
你的存储过程在哪里?分享代码。不是屏幕截图
-
为什么要使用表格提示 (
WITH(NOLOCK))?这是not recommended unless debugging specific performance issues。 -
嘿,我没有任何线索......这是我工作场所的现有存储过程,用于检查用户的访问级别......他们希望我连接到我开发的 asp.net 应用程序...
标签: c# asp.net sql-server stored-procedures ado.net