我面临一个绝对奇怪的问题,感觉更像是 Postgres 错误而不是算法问题。
我有这个功能:
CREATE FUNCTION sp_connect(mail character varying, passwd character varying, role character varying)
RETURNS json LANGUAGE plpgsql STABLE AS
$$
DECLARE
user_info record;
BEGIN
IF role = 'Role1' THEN
SELECT u.id, r.name INTO user_info
FROM users u
INNER JOIN users_roles ur ON ur.user_id = u.id
INNER JOIN roles r ON ur.role_id = r.id
WHERE u.email = mail
AND u.password = encode(digest(CONCAT(passwd, u.password_salt), 'sha512'), 'hex')
AND r.name = 'Role1';
ELSIF role = 'Role2' THEN
SELECT h.id, 'Role1' AS name …
Run Code Online (Sandbox Code Playgroud) 在 Microsoft SQL Server 2008 上,我实现了一个包含 20 多个参数的存储过程,在这个 SP 中我更新或插入数据到不接受空值的表中。
在执行插入或更新到表之前,我需要评估这些参数之一是否包含空值。
例子:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_Example]
@parameter1 char (8),
@parameter2 char (20),
@parameter3 char (20),
@parameter4 char (20),
@parameter5 char (20),
@parameter6 char (20),
@parameter7 char (20),
@parameter8 char (40),
@parameter9 char (15),
@parameter10 char (15) ,
@parameter11 char (15)...
Run Code Online (Sandbox Code Playgroud)
我有一个可能的解决方案,它是按参数执行评估参数并验证if is null
添加一些值,但我正在为此寻找更好的解决方案。
sql-server-2008 sql-server stored-procedures sql-server-2008-r2
我有一个关于存储过程的用户权限的查询。
如果用户没有在数据库中创建表的权限,但有创建和执行存储过程的权限
如果这些存储过程创建表(作为执行的 SQL 代码的一部分),那么用户在尝试创建表时执行存储过程时会收到错误吗?