小编Eri*_* Ly的帖子

函数使用两次时的 PL/pgSQL 问题(缓存问题?)

我面临一个绝对奇怪的问题,感觉更像是 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)

postgresql plpgsql functions plan-cache postgresql-9.4

6
推荐指数
1
解决办法
4091
查看次数

是否可以将多个参数同时验证到 sql 中的存储过程中?

在 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

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

MySQL存储过程用户权限

我有一个关于存储过程的用户权限的查询。

如果用户没有在数据库中创建表的权限,但有创建和执行存储过程的权限

如果这些存储过程创建表(作为执行的 SQL 代码的一部分),那么用户在尝试创建表时执行存储过程时会收到错误吗?

mysql stored-procedures permissions

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