标签: stored-functions

在mysql的存储函数中的SELECT语句中使用变量作为OFFSET

我对于为mySQL数据库写存储函数的主题很新,因此我不确定我在这里尝试做什么是可能的.

我需要一个函数,它将从表中的随机行返回一列.我不想使用ORDER BY RAND()方法来做到这一点,而是我会这样做:

DECLARE MAX_COUNT INT DEFAULT 120000;
DECLARE rand_offset INT;
DECLARE str_rnd_word VARCHAR(255);
SET rand_offset = FLOOR((RAND() * MAX_COUNT));

SELECT word INTO str_rnd_word FROM all_words LIMIT 1 OFFSET rand_offset ;

RETURN str_rnd_word;
Run Code Online (Sandbox Code Playgroud)

MySQL在创建类似于body的函数时抛出错误.但是,当我使用硬编码的数字作为OFFSET时,它工作得很好.

有人可以就这个话题说清楚.

我在Windows机器上运行MySQL 5.0.45.

谢谢

mysql stored-functions

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

使用存储的函数创建数据库

我是PostgreSQL的新手,想要使用存储函数创建数据库.
例如:

CREATE OR REPLACE FUNCTION mt_test(dbname character varying)
  RETURNS integer AS
$BODY$

Create Database $1;

Select 1;

$BODY$
  LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)

当我尝试执行此函数时,我收到语法错误.

Postgres是否支持CREATE DATABASE存储函数中的语句?

database postgresql transactions stored-functions

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

在我需要的php文件中包含所有函数或仅包含我需要的函数?

所以这就是我想要做的.

  1. 第一个选项是将每个函数写入不同的php文件中,然后将它们全部包含在一个名为includes functions.php的php文件中,每当我创建一个新页面时,让我们说index.php我只包含"函数. PHP的";

    为什么我需要这样做?因为我只需要包含一个文件,所有功能都将包含在内.现在问题可能是服务器负载.我不确定有多少未调用的函数会影响性能.

  2. 第二个选项是再次创建我需要的文件,组合它们,然后每当我需要一个函数时调用它.这样做的缺点是我要做更多工作才能进行分类,我将不得不包含大量文件

所以我想问一下,第一个选项是否增加了cpu和内存负载,我必须去第二个?第一种方式是否有任何性能问题,或者php没有解析未使用的功能?

php performance stored-functions

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

MongoDB:执行存储的JavaScript函数时出错

当我运行下面存储的JavaScript函数时,我得到错误:

> db.system.js.save({_id:"last_n_users", value: function(n){return db.users.find().sort({created_at:-1}).limit(n)}})
> db.eval("last_n_users(10)")
Run Code Online (Sandbox Code Playgroud)

这是错误:

{ "value" : "DBQuery: store.users -> undefined" }
Run Code Online (Sandbox Code Playgroud)

为什么?请帮我?

querying stored-functions mongodb

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

Postgresql Select视图使用where子句太慢

问题在视图执行时间和表执行时间之间是不同的。

为什么两个查询之间有这么多差异?

使用“ LIMIT”子句的查询2查询的速度越来越快,但现在却非常慢。(例如Select * From ... limit 1000)

注意:我在VIEW中使用的功能不会做任何艰苦的工作。语言plpgsql。

查询1:执行时间= 106.726 ms;

   EXPLAIN ANALYZE SELECT * FROM dbo.ST_Foto    where     StationId='Sample Guid'  
        and  Tarih <='2018-09-12'   -- Table
Run Code Online (Sandbox Code Playgroud)

查询1解释分析;

  "Seq Scan on st_foto  (cost=0.00..4559.68 rows=103878 width=215) (actual time=0.036..81.046 rows=103938 loops=1)"
"  Filter: ((tarih <= '2018-09-12 00:00:00'::timestamp without time zone) AND (stationid = 'ac5a2189-f931-47c0-9845-d0ff8eac7cb7'::uuid))"
"  Rows Removed by Filter: 20174"
"Planning time: 0.359 ms"
"Execution time: 106.726 ms"
Run Code Online (Sandbox Code Playgroud)

查询2执行时间= 30562.223 ms;

  EXPLAIN ANALYZE SELECT * FROM dbo.VWST_Foto    where     StationId='Sample Guid'  
            and  Tarih …
Run Code Online (Sandbox Code Playgroud)

postgresql view stored-functions postgresql-performance

5
推荐指数
0
解决办法
334
查看次数

使用Web API TransactionScope和SQL Server内存表问题

每当我通过Web API访问具有内存表的存储过程TransactionScope时,都会出现此错误:

当前事务无法提交,并且不能支持写入日志文件的操作。回滚事务。当前事务无法提交,并且不能支持写入日志文件的操作。回滚事务。当前事务无法提交,并且不能支持写入日志文件的操作。回滚事务。在批处理结束时检测到不可提交的事务。交易回滚

我试图直接在SQL Server Management Studio中执行相同的存储过程,并且工作正常。

另外,当我TransactionScope从Web API中删除时,它也可以正常工作。但是我想TransactionScope在Web API内使用

在存储过程中,我有以下内容:

SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
BEGIN TRY
 SELECT ITEMID FROM SAMPLE_IN_MEMORY_TABLE
           ----
END TRY
BEGIN CATCH
--
END CATCH
Run Code Online (Sandbox Code Playgroud)

在Web API内部,按照以下方式使用存储过程

QueriesTableAdapter qa = new QueriesTableAdapter();

using (TransactionScope scope = new TransactionScope())
{
      qa.SpSampleInMemoeryAccess(g_OutParameter64);

      if (g_OutParameter64 > 0)
      {
          scope.Complete();
          Status = true;             
      }
      else
      {
          Status = false;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

stored-functions asp.net-web-api2 in-memory-tables

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

从ado.net调用Oracle存储函数并获得结果的正确方法是什么?

我有一个使用ado连接到Oracle数据库的vb.net代码库.我们有很多存储过程可以调用,有些存在多个out参数.但是,我现在需要调用一个存储函数,我不清楚如何将函数的结果返回到我的VB代码中.

编辑:我正在返回一个整数.

如何从ado.net正确调用oracle存储函数?

oracle ado.net stored-procedures function stored-functions

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

存储函数中的临时表?

我正在编写一个函数,我需要使用一个TABLE变量(我听说它们在MySQL中不存在)或临时表.

但是,似乎临时表似乎只在存储过程中工作,而不是函数.我一直收到这个错误:

存储函数或触发器中不允许显式或隐式提交.


我正在努力建立的是我早期问题的解决方案.它是一个接收开始日期,结束日期和逗号分隔字符串的函数.它首先查找开始日期和结束日期之间的所有月份,并将它们作为单个记录保存在第一个临时表中.然后它解析出逗号分隔的字符串并将它们保存到第二个临时表中.然后它对两者进行选择连接,如果存在记录,则返回true,否则返回false.

我的目的是将其用作另一个查询WHERE子句的一部分,因此它需要是一个函数而不是存储过程.

如何在存储函数中使用临时表?如果我不能,我该怎么办呢?

这是我的(目前已损坏)功能(或作为要点):

-- need to parse out a string like '4,2,1' and insert values into temporary table
-- MySQL doesn't have a native string split function, so we make our own
-- taken from: http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
DROP FUNCTION IF EXISTS SPLIT_STR;
CREATE FUNCTION SPLIT_STR(x VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, '');

-- need to …
Run Code Online (Sandbox Code Playgroud)

mysql stored-functions

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

MySQL存储函数中的IF语句出错

我在第12行收到错误(在endif语句中).我相信我在IF或ELSE中做错了什么,任何人都可以帮助我吗?

DELIMITER $$

CREATE FUNCTION TEST (`param` INT) 
RETURNS INT 
DETERMINISTIC
BEGIN
    DECLARE `var` INT;

    SET `var` = 1;

    IF `param` > 0 THEN
        SET `var` = `var` + `param`;
    END IF;

    RETURN `var`;
END$$
Run Code Online (Sandbox Code Playgroud)

编辑:(与案件相同的功能,而不是如果,相同的问题)

DELIMITER $$

CREATE FUNCTION TEST (`param` INT) 
RETURNS INT 
DETERMINISTIC
BEGIN
    DECLARE `var` INT;

    SET `var` = 1;

    SET `var` = 
        CASE
            WHEN `param` > 0 THEN `var` + `param` ELSE `var`
        END ;

    RETURN `var`;
END$$
Run Code Online (Sandbox Code Playgroud)

mysql sql stored-functions

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

PostgreSQL函数数字类型错误

我正在尝试在PostgreSQL中创建一个存储过程。当我使用时float,该函数有效,但是当我尝试将floats 更改numeric为时出现错误:

ERROR: cannot change return type of existing function
SQL state: 42P13
Detail: Row type defined by OUT parameters is different.
Hint: Use DROP FUNCTION percent_grades(text) first.
Run Code Online (Sandbox Code Playgroud)

我真的不知道这是什么意思,但是除了CAST更改,我不需要执行任何其他操作type

我的职能是:

CREATE OR REPLACE FUNCTION percent_grades(text)
RETURNS TABLE(grade text, percent float)
AS
  $$
    DECLARE percent_total float;
    BEGIN
      RETURN QUERY
        SELECT psa_grade_name, 
               SUM(psa_amount) / CAST(total_cards($1) AS float) AS percent_total
        FROM psa_pop_view
        WHERE psa_card = $1
        GROUP BY psa_grade_name
        ORDER BY psa_grade_name;
    END; …
Run Code Online (Sandbox Code Playgroud)

sql postgresql ddl stored-functions

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