当前位置:首页 » 存储配置 » mysql存储过程字符串参数

mysql存储过程字符串参数

发布时间: 2024-11-13 15:07:46

⑴ mysql 存储过程,如何把一个 字符串变成一个 整形数 比如 “33” 变成整数的33

convert(str, signed)

⑵ mysql数据库中字符串拼接问题

mysql不能直接运行动态sql语句的,但是可以写在存储过程中,然后调用过程执行,具体如下:

(1)定义存储过程,示例:

CREATEDEFINER=`root`@`localhost`PROCEDURE`query_extra_table`(table_indexvarchar(255))
BEGIN
SET@sql=concat("select*fromtbl_order_",table_index);
PREPAREstmtFROM@sql;
EXECUTEstmt;
END

(2)调用存储过程:

CALLquery_extra_table('483')

⑶ mysql存储过程中分支语句有哪些

存储过程:
create procere p()
begin
/*thi procere does nothing*/
end;

1.参数
Parameters 参数
让我们更进一步的研究怎么在存储过程中定义参数1. CREATE PROCEDURE p5
() ...
2. CREATE PROCEDURE p5
([IN] name data-type) ...
3. CREATE PROCEDURE p5
(OUT name data-type) ...
4. CREATE PROCEDURE p5
(INOUT name data-type) ...

2.Conditions and if-then-else 条件式和 if-then-else

3.Loops 循环语句
WHILE ... END WHILE
LOOP ... END LOOP
REPEAT ... END REPEAT
GOTO

4.DECLARE HANDLER syntax 声明异常处理的语法
DECLARE
{ EXIT | CONTINUE }
HANDLER FOR
{ error-number | { SQLSTATE error-string } | condition }
SQL statement

5.Cursors 游标
游标实现功能摘要:
DECLARE cursor-name CURSOR FOR SELECT ...;
OPEN cursor-name;
FETCH cursor-name INTO variable [, variable];
CLOSE cursor-name;
已现经在可我以们完开成始基着本眼的游事标了务如。声虽明然游我标们,的打存开储游过标程,中从的游游标标里语法读取还,并关没闭有完游整标。

6.Functions 函数
Summary:
摘要 CREATE FUNCTION
Limitations of functions
函数的限制
我们已经很清楚可以在存储过程中使用的元素了。下面我要讲的是前面没有提到的函数。

⑷ 创建存储过程sql语句

1)过程名
存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即db_name.sp_name。
需要注意的是,名称应当尽量避免选取与MySQL内置函数相同的名称,否则会发生错误。
2)过程参数
存储过程的参数列表。其中,<参数名>为参数名,<类型>为参数的类型(可以是任何有效的MySQL数据类型)。当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号),也可以有1个或多个参数。
MySQL存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用IN、OUT和INOUT三个关键字标识。其中,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。

⑸ mysql存储过程一个参数有多个逗号分割

这个应该可以使用字符串拼接,你是不是这样写存储过程:
create procere p_proc(var_in int)
begin
delete from [tableName] where [colName] in (var_in);

end

然后又这样调用:
call p_proc(1, 2, 3);
这样肯定不行,那么你可以这样:
create procere p_proc(var_in varchar(5000))
begin

set @sql = concat("delete from [tableName] where [colName] in (", var_in, ")");

prepare stmt_exe_sql from @sql;
execute stmt_exe_sql;
deallocate prepare stmt_exe_sql;
end

这样就相当于把(1, 2, 3)拼接成语句"delete from [tableName] where [colName] in (1, 2, 3)", 然后执行,就可以删除了。

⑹ Mysql中存储过程或函数 如何将逗号分隔的字符串倒序输出 如 :4531,8651,3256 变为: 3256,8651,4531

DELIMITER//

DROPFUNCTIONReverseWordBy//

CREATEFUNCTIONReverseWordBy(pOldValTINYTEXT,pDivCharCHAR(1))
RETURNSTINYTEXT
BEGIN
/**预期结果.**/
DECLAREvResultTINYTEXT;
--当前逗号的位置.
DECLAREvIndexINT;
--前一个逗号的位置.
DECLAREvPrevIndexINT;

--查询第一个逗号的位置.
SETvIndex=INSTR(pOldVal,pDivChar);

IFvIndex=0THEN
--参数中没有逗号,直接返回.
RETURNpOldVal;
ENDIF;

--初始化情况,前一个逗号不存在.
SETvPrevIndex=0;
--初始化结果为空白字符.
SETvResult='';

--循环处理。
WHILEvIndex>0DO
--设置结果=本次查询的结果,以前的查询结果.
SETvResult=CONCAT(SUBSTRING(pOldVal,vPrevIndex+1,(vIndex-vPrevIndex-1)),pDivChar,vResult);
--前一个逗号的位置=当前逗号的位置
SETvPrevIndex=vIndex;
--查询下一个逗号的位置.
SETvIndex=LOCATE(pDivChar,pOldVal,vPrevIndex+1);
ENDWHILE;

--最后追加最后一组数据.
SETvResult=CONCAT(SUBSTRING(pOldVal,vPrevIndex+1),pDivChar,vResult);

--清除掉最后一个逗号.
SETvResult=LEFT(vResult,LENGTH(vResult)-1);

--返回结果.
RETURNvResult;
END;
//


DELIMITER;

SELECTReverseWordBy('4531,8651,3256',',')A;

SELECTReverseWordBy('1,12,123,1234,12345,123456',',')B;



输出结果:

mysql>SELECTReverseWordBy('4531,8651,3256',',')A;
+----------------+
|A|
+----------------+
|3256,8651,4531|
+----------------+
1rowinset(0.00sec)

mysql>
mysql>SELECTReverseWordBy('1,12,123,1234,12345,123456',',')B;
+----------------------------+
|B|
+----------------------------+
|123456,12345,1234,123,12,1|
+----------------------------+
1rowinset(0.00sec)

⑺ mysql存储过程一个参数有多个逗号分割

这个应该可以使纯笑用字符串拼接,你是不是这样写存储陆昌过程:
create procere p_proc(var_in int)
begin
delete from [tableName] where [colName] in (var_in);

end

然后又这样调用做悉含:
call p_proc(1, 2, 3);
这样肯定不行,那么你可以这样:
create procere p_proc(var_in varchar(5000))
begin

set @sql = concat("delete from [tableName] where [colName] in (", var_in, ")");

prepare stmt_exe_sql from @sql;
execute stmt_exe_sql;
deallocate prepare stmt_exe_sql;
end

这样就相当于把(1, 2, 3)拼接成语句"delete from [tableName] where [colName] in (1, 2, 3)", 然后执行,就可以删除了。

热点内容
echolinux换行 发布:2024-11-22 11:11:27 浏览:291
accesssql查询参数查询 发布:2024-11-22 11:03:57 浏览:718
华为共享密码忘记了如何查 发布:2024-11-22 10:55:14 浏览:425
解压捏星星 发布:2024-11-22 10:51:34 浏览:361
内存遍历工具源码 发布:2024-11-22 10:50:50 浏览:526
音量键凹进去怎么修复安卓 发布:2024-11-22 10:37:45 浏览:542
不正确的c语言标识符是 发布:2024-11-22 10:16:01 浏览:108
战术小队什么时候上线安卓版 发布:2024-11-22 10:11:46 浏览:11
甄嬛传哪个播放器可以缓存 发布:2024-11-22 10:11:45 浏览:242
sql数据库的连接方式 发布:2024-11-22 10:10:18 浏览:755