sql insert语句中如何使用变量

我要向一张表中插入多行数据。我首先使用了一个游标获得数据,然后将数据赋值给几个变量。接着想使用这些变量向表中插入数据。但是报错:
Msg 137, Level 15, State 2, Line 67
Must declare the scalar variable "@".

我的语句是这样的:
INSERT INTO [BTS].[dbo].[Main_Test_Info] ([Test_Type],[SN_AN],[SN_ACU],[Operator],
[Test_Status],[Test_Time],[Test_Station],
[Test_Machine],[SW_Version],[Duration],
[Fail_Item],[Product_Code])
Values(@Test_Type,@SN_AN,@[SN_ACU],@[Operator],
@Test_Status,@Test_Time,@Test_Station,
@Test_Machine,@SW_Version,@Duration,
@Fail_Item,@Product_Code)

是不是要在values里的变量加引号什么的??

sql insert语句中使用变量:

(insert)向表中添加一个新记录,要使用SQL INSERT 语句。这里有一个如何使用这种语句的例子: INSERT mytable (mycolumn) VALUES (‘some data')  这个语句把字符串'some data'插入表mytable的mycolumn字段中。将要被插入数据的字段的名字在第一个括号中指定,实际的数据在第二个括号中给出。

    INSERT 语句的完整句法如下:INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |

    Values_list | select_statement}

    如果一个表有多个字段,通过把字段名和字段值用逗号隔开,可以向所有的字段中插入数据。假设表mytable有三个字段first_column,second_column,和third_column.下面的INSERT语句添加了一条三个字段都有值的完整记录:INSERT mytable (first_column,second_column,third_column)

    VALUES (‘some data','some more data','yet more data')

    可以使用INSERT语句向文本型字段中插入数据。但是,如果需要输入很长的字符串,应该使用WRITETEXT语句。

    如果在INSERT 语句中只指定两个字段和数据。向一个表中插入一条新记录,但有一个字段没有提供数据。在这种情况下,有下面的四种可能:

    1)如果该字段有一个缺省值,该值会被使用。例如,假设插入新记录时没有给字段third_column提供数据,而这个字段有一个缺省值'some value'.在这种情况下,当新记录建立时会插入值'some value'。

    2)如果该字段可以接受空值,而且没有缺省值,则会被插入空值。

    3)如果该字段不能接受空值,而且没有缺省值,就会出现错误。会收到错误信息:The column in table mytable may not be null.

    4)最后,如果该字段是一个标识字段,那么它会自动产生一个新值。当向一个有标识字段的表中插入新记录时,只要忽略该字段,标识字段会给自己赋一个新值。

    注:向一个有标识字段的表中插入新记录后,可以用SQL变量@@identity来访问新记录 的标识字段的值。考虑如下的SQL语句:

    INSERT mytable (first_column) VALUES(‘some value')

    INSERT anothertable(another_first,another_second)

    VALUES(@@identity,'some value')

    如果表mytable有一个标识字段,该字段的值会被插入表anothertable的another_first字段。这是因为变量@@identity总是保存最后一次插入标识字段的值。

    字段another_first应该与字段first_column有相同的数据类型。但是,字段another_first不能是应该标识字段。Another_first字段用来保存字段first_column的值。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-26
前面有@是说这是个变量,不是一个确定的值,比如先:set @Test_Type='abc',然后你才能insert追问

用游标的自动赋值了。我就是想在insert语句里使用变量,不然赋值几百条数据如要让人崩溃呀!

追答

我明白了,使用变量的话,建议你使用concat(,);方法,把sql语句和变量连起来,再执行,如果是字符类型的话,是需要加引号!(这个得看你的变量中有没有引号,如果有的话就不需要再加了)

追问

能给个例子吗?concat如何使用?

追答

SET @a = "table_name";
set @b = "你好!";
SET @tsql =CONCAT("insert into ",@a," values(1,'",@b,"');“);
PREPARE esql FROM @tsql;
EXECUTE esql;
DEALLOCATE PREPARE esql;

就是把原sql语句和变量拼接起来,然后一起执行就ok了,要注意 :引号和空格,比如上面@b其实只是:你好!,没有引号,但是执行insert必须加引号,所以,concat中@b前后各有各单引号!

本回答被提问者和网友采纳
第2个回答  2015-05-12
Values(@Test_Type,@SN_AN,@[SN_ACU],@[Operator]
这里的变量@[SN_ACU],@[Operator]不要加中括号@SN_ACU,@Operator

jsp中sql语句中如何引用int型变量写insert语句
String sql="insert into xs (name,age) values ('"+name+"',"+age+")";呵呵~这样就行了,去掉单引号就就是int类型的!执行下看!

sql语句中有insert然后有个select@@identity,该怎么执行,C#
使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。如以下SQL语句:string sql="insert into users values('admin','admin','男');select @@Identity";该sql语句拼装在一起执行,等于是先执行插入操作,然后返回所插入的数据的id这条sql语句...

SQL的INSERT语句的VALUES后面可以包含变量吗
可以包含变量,但这个变量在values使用前必须已经赋值

sql insert into vlaues()参数用变量代替要怎么写??'"+var+"'怎么不...
1.首先确定values中的值与数据库中字段的顺序对应。2.其次可以按照insert into tablename(字段1,字段2,。。。)values('"+字段1值+"','"+字段2值+"',...)的方式 3.你的sql字符串中注意空格,目测是表名与values之间没有空格的原因

oracle的sql怎么定义变量啊
where "date"=a; commit;end;上边是创建 执行时 beginp_insert('20110101') ;end;说一下,你这个a和表2里的类型必须都一致,都要是字符型,如果不是的话,输入参数a不可以变,你可以在表2里用to_char函数将日期转成这个格式 还有你表2里的字段叫date,这个是关键字,所以加了双引号 ...

mysql插入语句中使用变量
我用的是textbox1.text应该也算是变量..你那种我没有试过 你把&改成+试一下 我不知道行不行 String sql="insert into loginuser values('"+name+"','"+psw1+"')";

sql语句 insert int变量值怎么写
")"; 试试改为 ");" 或干脆不写 ;字串需要双“单引号”,数值不用双“单引号”,(建议 + 号改为 &)。回答你的补充 没说你原内容有何错误,错误只是那个最后的分号干脆不写试试。没让你改单引号 :‘)’sql = "INSERT into ddd (YongHuMing ,MiMa ,MiMaAgin,QuanXian)values('" &...

vb sql insert插入变量怎么写
cnn,3,1 里面的3代表是使用的静态游标,表示用户对记录说做的修改,增加或删除记录都不会反映到记录集中 可以直接写 cnn.execute("insert into user values('"&b&"','"&a&"')")

sql 中循环语句中的set怎么复制变量
首先insert 语句中的列名F_MeterName出现了两次;其次,循环体中的set @MeterID = @MeterID + @MeteID是错误的,@MeteID是int型的。应写成set @MeterID = @MeterID + cast(MeteID as varchar(5))还有就是@i 这个变量是做什么用的?在脚本中没有什么意义呀。希望有所帮助 ...

sql中查询出一条数据如何将数据存在一个变量中
存到变量:declare @ID select @ID := 员工编号 from 员工表 where 员工姓名='twq'这样的方法必须保证结果只有一条记录,否则报错。插入到一个表tmp-ID中(自动创建一个表)select 员工编号 into tmp-ID from 员工表 where 员工姓名='twq'...

相似回答