如何解决SQL Server,在TSQL中创建临时表时出现问题
| 嗨,当我执行以下Tsql时,出现以下错误消息。但是sql语法没有错吗?create table #tb ([t1] tinyint,[t2] varchar(50))
insert into #tb values
(1,\'a\'),(2,\'b\')
Msg 102,第15级,状态1,第3行
\',\'附近的语法不正确。
SQL查询窗口中没有其他内容。运行sql Server 2005。
解决方法
正如jmoreno所提到的,SQL Server 2008+支持1语法,但是您将其标记为SQL Server 2005。
采用:
CREATE TABLE #tb ([t1] tinyint,[t2] varchar(50))
INSERT INTO #tb
SELECT 1,\'a\'
UNION ALL
SELECT 2,\'b\'
也可以使用SELECT ... INTO
子句在单个查询中执行此操作,但是临时表尚不存在:
SELECT *
INTO #tb
FROM (SELECT CAST(1 AS TINYINT) AS t1,CAST(\'a\' AS VARCHAR(50)) AS t2
UNION ALL
SELECT 2,\'b\') x
,尝试这个:
create table #tb ([t1] tinyint,[t2] varchar(50));
insert into #tb ([t1],[t2])
values(1,\'a\'),(2,\'b\')
您需要指定要插入的列。
//编辑
抱歉,下面是SQL 2005语法。它没有优雅。
CREATE TABLE #tb ([t1] TINYINT,[t2] VARCHAR(50));
INSERT INTO #tb
SELECT 1,\'b\'
,您说您正在使用SQL 2005,但是直到2008年才实现VALUES(),()语法。
,看起来您正在尝试插入两行,因此您需要先插入第一行,然后再插入第二行,而不是尝试将所有行都压缩成一行:
CREATE TABLE #tb ([t1] TINYINT,[t2] VARCHAR(50));
INSERT INTO #tb([t1],[t2]) VALUES (1,\'a\'); --row 1
INSERT INTO #tb([t1],[t2]) VALUES (2,\'b\'); --row 2
--see if it worked
SELECT [t1],[t2]
FROM #tb
--clean up the temp table when you\'re done
DROP TABLE #tb
,选择t.field1,t.field2 INTO #myTempTable
从myDB.myOwner.myTable t
在哪里...
ORDER BY t.field1,t.field2;
-如果希望表为GLOBAL,请使用## myTempTable作为名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。