Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 存储过程IN、OUT、INOUT参数_Mysql_Sql_Stored Procedures - Fatal编程技术网

Mysql 存储过程IN、OUT、INOUT参数

Mysql 存储过程IN、OUT、INOUT参数,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,有人能给我详细解释一下IN、OUT和INOUT参数之间的区别吗 谢谢 附言。 我使用的是MySQL 5.5,在参数接收来自调用者的数据时。out参数将数据推送到调用者(通过引用调用)。inout参数同时执行这两个操作。如果不清楚您想知道的内容,我不知道如何更详细地说明这一点。IN参数通过值传递给SP。 OUT参数通过值从SP返回。 INOUT参数通过引用传递,因为它们包含一个输入值和另一个输出值。1。在 mysql> CREATE PROCEDURE in_2(IN value I

有人能给我详细解释一下IN、OUT和INOUT参数之间的区别吗

谢谢

附言。
我使用的是MySQL 5.5,在参数接收来自调用者的数据时。out参数将数据推送到调用者(通过引用调用)。inout参数同时执行这两个操作。如果不清楚您想知道的内容,我不知道如何更详细地说明这一点。

IN参数通过值传递给SP。 OUT参数通过值从SP返回。
INOUT参数通过引用传递,因为它们包含一个输入值和另一个输出值。

1。在

    mysql> CREATE PROCEDURE in_2(IN value INT )BEGIN SELECT value; SET value =100;SE
    LECT value;END//
    Query OK, 0 rows affected (0.00 sec)

     mysql> SET @s =9//
    Query OK, 0 rows affected (0.00 sec)

    mysql> CALL in_2(@s)//
    +-------+
    | value |
    +-------+
    |     9 |
    +-------+
    1 row in set (0.00 sec)

    +-------+
    | value |
    +-------+
    |   100 |
    +-------+
    1 row in set (0.00 sec)

mysql> SELECT @s;
    -> //
+------+
| @s   |
+------+
|    9 |
+------+
1 row in set (0.00 sec) 
mysql> CREATE PROCEDURE in_3(OUT value INT)
    -> SET value=100//
Query OK, 0 rows affected (0.00 sec)

mysql> SET @x=56//
Query OK, 0 rows affected (0.00 sec)

mysql> CALL in_3(@x)//
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @x//
+------+
| @x   |
+------+
|  100 |
+------+
1 row in set (0.00 sec)
2.退出

    mysql> CREATE PROCEDURE in_2(IN value INT )BEGIN SELECT value; SET value =100;SE
    LECT value;END//
    Query OK, 0 rows affected (0.00 sec)

     mysql> SET @s =9//
    Query OK, 0 rows affected (0.00 sec)

    mysql> CALL in_2(@s)//
    +-------+
    | value |
    +-------+
    |     9 |
    +-------+
    1 row in set (0.00 sec)

    +-------+
    | value |
    +-------+
    |   100 |
    +-------+
    1 row in set (0.00 sec)

mysql> SELECT @s;
    -> //
+------+
| @s   |
+------+
|    9 |
+------+
1 row in set (0.00 sec) 
mysql> CREATE PROCEDURE in_3(OUT value INT)
    -> SET value=100//
Query OK, 0 rows affected (0.00 sec)

mysql> SET @x=56//
Query OK, 0 rows affected (0.00 sec)

mysql> CALL in_3(@x)//
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @x//
+------+
| @x   |
+------+
|  100 |
+------+
1 row in set (0.00 sec)


本视频对存储过程有一些很好的解释。请仔细检查一下

最后一部分在SQL Server中是不正确的。无论如何,LINQ2SQL就是这样做的。你可能是对的。我觉得它更一般。只要看看你的链接,它指的是TSQL。由于询问者没有指定语言,我想我的回答更一般。@EladLachmi SP在您的回答中提到了什么answer@KasunSiyambalapitiya-存储过程然后告诉我们您使用的是哪个数据库。关于
INOUT