带有变量作为参数的SQL更新

时间:2013-08-05 21:23:09

标签: mysql sql stored-procedures dynamic-sql

我正在使用MySQL中的存储过程来更新SQL表中的行。我所拥有的是一个表,其中几个列以递增方式命名。 EX:Page_1,Page_2,Page_3 ....等。 存储在这些位置的数据会在不同时间更新,我还有另一列来存储行更新的次数。每次过程运行时,count变量都会递增,这使我可以利用它的值来跟踪下一次数据更新的发生位置。

从我的研究中,我一直在寻找利用“动态SQL”的解决方案。我不明白如何利用它来解决我的问题。

我想将变量传递给update语句作为列名。

我目前的代码如下。

 SET COUNT = COUNT + 1; -- modify count from count column
 SET COLUMNLOCATIONVARIABLE = CONCAT('Page_' , COUNT); -- concatenate the count with the column "Prefix"

 UPDATE Table
 SET COLUMNLOCATIONVARIABLE = INPUTVARIABLE --Use the concatenated statement as the column name and update it with input data
 WHERE mainID = INPUTID;

如果有人能向我解释如何使用动态SQL或其他使用非动态SQL的解决方案将此变量作为列名传递,我将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这不是使用数据库的方法。为Page_*列创建一个新表,通过标识链接到主表,并带有页码列。然后,您可以根据需要更新并包含尽可能多的页面,主要标识和页码。