动态创建mysql数据库存储过程问题。麻烦帮帮忙。

aierduo 2010-05-23 08:59:05
大家好,我现在项目中要动态创建一个mysql数据库,然后在创建这个mysql数据库的存储过程的时候出了点问题。
就是当存储过程中有动态参数时(应该叫做这个名称),就会报错。我是通过 ExecuteNonQuery执行创建存储过程的脚本的,

下面是一个我写的一个需要用动态参数的存储过程(只为了测试)
DROP PROCEDURE IF EXISTS proc3;
CREATE PROCEDURE proc3 (IN t_name VARCHAR(40))
BEGIN
DECLARE v_sql VARCHAR(500);
SET v_sql= CONCAT('select * from ',t_name);
SELECT v_sql;

SET @v_sql=v_sql;
END

==================================
其中@v_sql 就是动态参数,但是在用ExecuteNonQuery执行的时候,C#应该把他当做是一个程序输入参数了,所以提示
Fatal error encountered during command execution.错误,具体的错误是,Parameter '@v_sql' must be defined.

现在不知道怎么搞了,大家有没有遇到我这样的情况,应该怎么创建才对?还是需要设置些什么?
...全文
142 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dichun 2010-05-23
  • 打赏
  • 举报
回复
@ 表示变量;
aierduo 2010-05-23
  • 打赏
  • 举报
回复
在mysql里面定义变量的方式是:
上面的同学,
你定义在 SQL SERVER 中定义变量,前边必须加@;
所以说你的SQL写的有问题;

DECLARE @v_sql VARCHAR(500);

至于@开头的是什么东西,我现在也搞不动,晕啊,以前都没用过mysql。

dichun 2010-05-23
  • 打赏
  • 举报
回复
那你也得定义这个变量@v_sql 啊
aierduo 2010-05-23
  • 打赏
  • 举报
回复
dichun
我这是mysql的。
dichun 2010-05-23
  • 打赏
  • 举报
回复
上面的同学,
你定义在 SQL SERVER 中定义变量,前边必须加@;
所以说你的SQL写的有问题;

CREATE PROCEDURE proc3 (IN t_name VARCHAR(40))
BEGIN
DECLARE @v_sql VARCHAR(500);
set @v_sql = ''
SET @v_sql = 'select * from '+ t_name ;
select @v_sql
END
永生天地 2010-05-23
  • 打赏
  • 举报
回复
完全不懂,帮顶

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧