sql server把一个表中查询出来的数据插入到另外一个表中

qq_34001659 2016-10-21 02:07:17


string sql = "insert into kqz_Card
(cardtime,cardtypeid,devid,devclass,imgid,imgstatus,isvalidate,modifyuser,modifytype,modifytime,faceidno,employeeid)"
[+ " values (@cardtime,@cardtypeid,@devid,@devclass,@imgid,@imgstatus,@isvalidate,@modifyuser,@modifytype,@modifytime,@faceidno,@(select employeeid from kqz_employee where kqz_employee.employeecode=:employeecode))"
+ "select @cardid=@@IDENTITY;";


从kqz_employee表中,通过employeecode字段查询出 employeeid;

然后再把employeeid插入到kqz_Card表中,出现了

[Err] 42000 - [SQL Server]必须声明标量变量 "@select"。
42000 - [SQL Server]必须声明标量变量 "@card

想问一下大神,这么写对不对,如果不对的话该怎么改呢
...全文
458 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-10-21
  • 打赏
  • 举报
回复
用我提供例子,在数据创建一个表,可直接调试,这里RowID为标识列,如果还不会,那爱莫能助了,你只能自己去看本入门书 (#C 操作SQL SERVER方面),按书多动手 e.g.

CREATE TABLE [dbo].[Tab4](
	[RowID] [INT] IDENTITY(1,1) NOT NULL,
	[ID] [INT] NULL,
	[Name] [NVARCHAR](50) NULL,
 CONSTRAINT [PK_Tab4] PRIMARY KEY CLUSTERED 
(
	[RowID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

中国风 2016-10-21
  • 打赏
  • 举报
回复
字符串加引号,特殊字符加N'
qq_34001659 2016-10-21
  • 打赏
  • 举报
回复
引用 6 楼 roy_88 的回复:
这样拼凑T-SQL
SqlCommand thisComm = thisConn.CreateCommand();
            string s = "©";
            thisComm.CommandText = @"INSERT INTO dbo.Tab4(ID, Name)VALUES(2,'" + s + "') select @@identity as ID";
            object thisRows = thisComm.ExecuteScalar();
            Console.WriteLine("RowID={0}", thisRows);
引用 6 楼 roy_88 的回复:
这样拼凑T-SQL
SqlCommand thisComm = thisConn.CreateCommand();
            string s = "©";
            thisComm.CommandText = @"INSERT INTO dbo.Tab4(ID, Name)VALUES(2,'" + s + "') select @@identity as ID";
            object thisRows = thisComm.ExecuteScalar();
            Console.WriteLine("RowID={0}", thisRows);
我这样试了一下,会出现这样的问题; 操作将数据类型 varchar 转换为 bigint 时出错; 然后我百度了一下, [quote=引用 6 楼 roy_88 的回复:] 这样拼凑T-SQL
SqlCommand thisComm = thisConn.CreateCommand();
            string s = "©";
            thisComm.CommandText = @"INSERT INTO dbo.Tab4(ID, Name)VALUES(2,'" + s + "') select @@identity as ID";
            object thisRows = thisComm.ExecuteScalar();
            Console.WriteLine("RowID={0}", thisRows);
我试了一下,会出现这样的问题,
引用 6 楼 roy_88 的回复:
这样拼凑T-SQL
SqlCommand thisComm = thisConn.CreateCommand();
            string s = "©";
            thisComm.CommandText = @"INSERT INTO dbo.Tab4(ID, Name)VALUES(2,'" + s + "') select @@identity as ID";
            object thisRows = thisComm.ExecuteScalar();
            Console.WriteLine("RowID={0}", thisRows);
我试了一下,会出现这样的问题,无法将数据类型nvarchar转换成bigint类型,为什么啊,我在网上看了用这种拼接也会出现这种问题
中国风 2016-10-21
  • 打赏
  • 举报
回复
这样拼凑T-SQL
SqlCommand thisComm = thisConn.CreateCommand();
            string s = "©";
            thisComm.CommandText = @"INSERT INTO dbo.Tab4(ID, Name)VALUES(2,'" + s + "') select @@identity as ID";
            object thisRows = thisComm.ExecuteScalar();
            Console.WriteLine("RowID={0}", thisRows);
qq_34001659 2016-10-21
  • 打赏
  • 举报
回复
引用 4 楼 roy_88 的回复:
直接用T-SQL时,把传参拼起来,字符串时加引号+值,不是直接加变量
能写一下吗?新手第一次用sqlserver,会给帖子加分的
中国风 2016-10-21
  • 打赏
  • 举报
回复
直接用T-SQL时,把传参拼起来,字符串时加引号+值,不是直接加变量
中国风 2016-10-21
  • 打赏
  • 举报
回复
没传入参数,明白? 参照传参方法 http://blog.csdn.net/roy_88/article/details/51318650
qq_34001659 2016-10-21
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
你没有传参数
select employeeid from kqz_employee where kqz_employee.employeecode=:employeecode employeeid 是通过这取出来的,是有参数的
中国风 2016-10-21
  • 打赏
  • 举报
回复
你没有传参数

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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