我想插入和检索插入的行,如下所示:
DECLARE @ultimo int;
INSERT INTO pv_mensaje
(
reporte ,
tipo_emisor ,
emisor ,
tipo_receptor,
receptor,
mensaje,
registro
) VALUES (1158,'cliente',6,'',0,'MMMM' ,GETDATE()) ;
SET @ultimo = (SELECT SCOPE_IDENTITY());
SELECT * FROM pv_mensaje WHERE id = (@ultimo)
但是发给我这个错误:
错误报告 - 行位置22'='预期字符的无效JDBC转义语法。
答案 0 :(得分:0)
添加:
DECLARE @sql varchar(max)
DECLARE @ultimo int;
INSERT INTO pv_mensaje
(
reporte ,
tipo_emisor ,
emisor ,
tipo_receptor,
receptor,
mensaje,
registro
) VALUES (1158,'cliente',6,'',0,'MMMM' ,GETDATE()) ;
SET @ultimo = (SELECT SCOPE_IDENTITY());
Set @sql = 'SELECT * FROM pv_mensaje WHERE id = ('+ @ultimo +')'
Exec (@sql)
或:
DECLARE @ultimo int;
INSERT INTO pv_mensaje
(
reporte ,
tipo_emisor ,
emisor ,
tipo_receptor,
receptor,
mensaje,
registro
) VALUES (1158,'cliente',6,'',0,'MMMM' ,GETDATE()) ;
SET @ultimo = (SELECT SCOPE_IDENTITY());
SELECT * FROM pv_mensaje WHERE id = @ultimo
答案 1 :(得分:0)
你可以这样做
SELECT @ultimo = SCOPE_IDENTITY());
现在您声明的变量将设置为该值。
然后
Set @sql = 'SELECT * FROM pv_mensaje WHERE id = ('+ @ultimo +')'
Exec (@sql)
答案 2 :(得分:0)
我想它是MS SQL Server。这是另一种选择
DECLARE @ultimo_tbl TABLE ( ID INT );
CREATE TABLE #pv_mensaje
(
reporte INT IDENTITY ,
tipo_emisor INT ,
emisor INT ,
tipo_receptor INT ,
receptor INT ,
mensaje INT ,
registro INT
);
INSERT INTO #pv_mensaje
( reporte ,
emisor ,
tipo_receptor ,
tipo_emisor ,
receptor ,
mensaje ,
registro
)
OUTPUT Inserted.reporte
INTO @ultimo_tbl
VALUES ( 1 ,
1 ,
1 ,
1 ,
1 ,
1
);
SELECT *
FROM #pv_mensaje WHERE pv.reporte IN (SELECT MAX(ID) FROM @ultimo_tbl);