标签: procedure

MYSQL,使用单个select语句在存储过程中设置两个变量

所以我希望它是类似的,或具有以下效果:

declare vFN varchar(20); 
declare vLN varchar(20);
set vFN, vLN = (select fname, lname from sometable where id = 1);
Run Code Online (Sandbox Code Playgroud)

显然,我可以做2次选择,但这看起来非常低效.

TIA

mysql variables select procedure

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

MYSQL LAST_INSERT_ID无法正常工作.我该如何解决?

我编写MySQL StoredProcedure来为每个表值创建并返回新的ID,但是,它在MySQL WorkBench和Java应用程序的last_insert_id()上得到了错误的值.

将从多个会话中调用此过程.

CALL `GET_NEW_ID`('test', @test);
select @test;
Run Code Online (Sandbox Code Playgroud)

它给了我"141215000000",这意味着last_insert_id()一直返回0.我看到它正确地将新数据插入到seq_data中.

CREATE PROCEDURE `GET_NEW_ID`(IN V_TABLE VARCHAR(10), OUT V_ID VARCHAR(12))
BEGIN

    INSERT INTO seq_data ( id, `name`, `stat_date`)
    SELECT IFNULL(MAX(id), 0)+1, V_TABLE, DATE_FORMAT(NOW(),'%Y%m%d') FROM seq_data WHERE name = V_TABLE AND stat_date = DATE_FORMAT(NOW(),'%Y%m%d');
    SET V_ID = concat(DATE_FORMAT(NOW(),'%y%m%d'),LPAD(LAST_INSERT_ID(), 6, '0'));

END
Run Code Online (Sandbox Code Playgroud)

表看起来像这样.

CREATE TABLE `seq_data` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) COLLATE utf8_bin NOT NULL,
  `stat_date` varchar(8) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`,`name`,`stat_date`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Run Code Online (Sandbox Code Playgroud)

我的目标是...... …

java mysql procedure

8
推荐指数
1
解决办法
730
查看次数

使用Oracle阻止程序PL/SQL

我有一个程序,我希望只有一个用户可以同时执行此过程.

sql oracle plsql procedure

7
推荐指数
1
解决办法
712
查看次数

删除用纯汇编编写的函数的序言

我正在使用Delphi 2010.是否可以告诉Delphi不为函数生成序言?我正在写一些像这样的纯汇编函数:

procedure SomeAssembly; stdcall;
begin
    asm
        ...
    end;
end;
Run Code Online (Sandbox Code Playgroud)

我想告诉Delphi不要为这个函数生成一个序言和结语,比如C++的__declspec(naked)特性.

所以没有人浪费他们的时间,我不需要帮助让这些功能序幕一起工作; 我已经可以做到了.这只是一个很大的不便,将使维护成为一个巨大的麻烦.我将不得不手动检查编译器生成的序言以查看它们的长度,如果更改,我的程序将崩溃.

我也知道我可以将函数编写为字节数组中的一系列字节,但这比查找Delphi序言的长度更糟糕.

delphi assembly procedure basm

7
推荐指数
1
解决办法
855
查看次数

使用Mozart Oz中的相同代码,函数和过程的行为会有所不同吗?

我尝试使用2种方法在Oz中打印出Fibonacci序列:使用Emac作为编辑器的函数和过程.程序在这里:

declare 
fun {Fibo N} 
   case N of 
      1 then 1 
   [] 2 then 1
[] M then {Fibo (M-1)} + {Fibo (M-2)} 
   end 
end 
declare
proc {Loop K}
   if K ==1 then  {Browse K}
   else
      {Loop K-1}
       {Browse {Fibo K}}
   end
end
{Loop 10}
Run Code Online (Sandbox Code Playgroud)

和功能:

declare 
fun {Fibo N} 
   case N of 
      1 then 1 
   [] 2 then 1
[] M then {Fibo (M-1)} + {Fibo (M-2)} 
   end 
end
declare
fun {Loo L}
   if L ==1 then  {Browse L} …
Run Code Online (Sandbox Code Playgroud)

procedure function mozart oz

7
推荐指数
1
解决办法
3449
查看次数

SQL过程可以返回一个表吗?

Oracle SQL过程可以返回一个表吗?我目前正在使用a dbms_output来打印出两个游标的输出,这两个游标在一个循环中,尽管如果它返回两列而看起来会更好.这可能在一个程序中吗?

sql oracle procedure

7
推荐指数
1
解决办法
3万
查看次数

如何在MySQL中停止运行过程?

我在MySQL中调用了一个过程,但它现在处于无限循环中!如何在MySQL中停止运行过程?以下是我的程序代码:

drop procedure if exists my_proc; 
DELIMITER $$
CREATE PROCEDURE my_proc
()
BEGIN
DECLARE VAR INT;
SET VAR=0;
WHILE VAR<10000
DO
INSERT INTO my_table () VALUES ();
END WHILE;
END; $$
DELIMITER;

CALL my_proc();
Run Code Online (Sandbox Code Playgroud)

mysql procedure

7
推荐指数
1
解决办法
8185
查看次数

PHPMyAdmin EDIT 和 EXECUTE 按钮禁用存储过程

一周前,我在远程 MySql 数据库(Web)中创建了几个存储过程......在创建它们的会话期间,我能够编辑它们,导出它们等......

现在,一周后,我想编辑它们,我发现“例程”选项卡中这两个的“编辑”和“执行”按钮被禁用...

例程选项卡

我的 Web 服务器正在运行 phpmyadmin 4.0.10.7

我发现,出于某种原因,在 INFORMATION_SCHEMA db 的 ROUTINES 表中,这些例程(过程)具有不同的 DEFINER(嗯,没有不同,但数据库认为它们不同)

程序定义器

这就是为什么我不能编辑它们......所以,最后,场景是这样的。我像往常一样登录到我的 CPanel 和 PHPMyAdmin,创建了这些程序,它们的定义器是 user@icario.servidoraweb.net(我的用户 + 域是我的托管服务提供商)......然后,当我尝试编辑它们时一周后,我登录,我发现我的用户现在(运行 SELECT CURRENT_USER();)是“user@10.0.5.47”...

我向我的托管服务提供商开了一张票,以找出为什么我现在登录到 CPanel 包含 IP 地址而不是域名,他们说他们不知道,他们没有更改任何内容。

现在,昨天我再次登录,然后我可以编辑那些程序,我检查我的用户,它再次是“user@icaro...”

今天,当我再次登录时,我又回到了“user@10.0...”

所以...我知道为什么我不能编辑那些程序...我不知道的是为什么我有时我的用户有域名,有时有 IP 地址..

对此有何想法?谢谢

mysql permissions stored-procedures procedure phpmyadmin

7
推荐指数
0
解决办法
3538
查看次数

正确的方法来销毁一个表单并在Delphi中显示另一个表单

目前在我的程序中,我有一个Startup表单和一个Main表单.启动表单显示一两秒钟.

现在,我在计时器中有以下代码:

  frmStartup.Destroy;

  frmMain := TfrmMain.Create(Self);
  frmMain.Show;
Run Code Online (Sandbox Code Playgroud)

现在,我不确定这是否是正确的方法.它可行,但在调用时application.Terminate(); 我收到一条访问违规消息,导致我相信我在破坏启动表单时做错了什么. .

如果有人能够显示正确的程序来做我想要的(非模态),我将不胜感激.

提前致谢,

编辑:

感谢所有反馈,我通过简单地添加代码修复了访问冲突:

  Action := caFree;
Run Code Online (Sandbox Code Playgroud)

进入frmStartup.formClose方法.

forms delphi procedure creation destruction

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

Oracle nocopy方法

我创建了一个Oracle块来检查在关联数组上使用nocopy的效果; 创建一个包含1000000个元素的数组,并将其作为参数传递给两个相同的方法,第一次作为输出参数,第二次作为输出nocopy.代码如下所示:

declare
type my_type is table of varchar2(32767) index by binary_integer;
my_array my_type;
st number;
rt number;
procedure in_out(m1 in out my_type)
is
begin
dbms_output.put_line(my_array(1));
end in_out;
procedure in_out_nocopy(m1  in out nocopy my_type)
is
begin
dbms_output.put_line(my_array(1));
end in_out_nocopy;
begin
for i in 1..999999 loop
  my_array(i) := '123456789012345678901234567890123456789012345678901234567890abcd';
end loop;
st := dbms_utility.get_time;
in_out(my_array);
rt := (dbms_utility.get_time - st)/100;
dbms_output.put_line('Time needed for in out is: ' || rt || ' 100''ths of second!');
st := dbms_utility.get_time;
in_out_nocopy(my_array);
rt := (dbms_utility.get_time …
Run Code Online (Sandbox Code Playgroud)

oracle procedure

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