我新的transact sql我有这个
的股票CREATE PROCEDURE Example
@MAESTRDESC varchar(50) --Contiene el valor a ingresar por pantalla
AS
/****Vars*****/
DECLARE
@Result TABLE
(
ClientesDisponibles int,
ClientesAgendados int
)
DECLARE
@SQL varchar(500),--Guarda la cantidad de clientes disponibles
@SQLAGENDADOS varchar(500)
SET @SQL = 'SELECT COUNT(idtable) from table';
SET @SQL = 'SELECT COUNT(idtable2) from table2';
INSERT INTO @Result EXEC @SQL, EXEC@SQLAGENDADOS;
SELECT
R.ClientesDisponibles,
R.ClientesAgendados
FROM
@Result R
RETURN
修改 例外说是
Column name or number of supplied values does not match table definition.
给予和例外,但我不知道我做错了什么。谢谢
答案 0 :(得分:2)
由于这一行,它不起作用:
DECLARE @SQL int
您需要将@SQL
声明为VARCHAR
才能将其用作string
。 @SQLAGENDADOS
也是如此。
但是,您还应该看到@Martins关于链接多个执行的答案。
为什么不执行以下操作:
DECLARE @Count1 INT;
DECLARE @Count2 INT;
SELECT @Count1 = COUNT(idtable)
FROM table;
SELECT @Count2 = COUNT(idtable2)
FROM table2;
INSERT INTO @Result
VALUES (@Count1, @Count2);
答案 1 :(得分:2)
你不能把这样的多个EXEC
电话连在一起,而你却错过了括号(而且Neil也是如此!)
你可以做到
INSERT INTO @Result(ClientesDisponibles)
EXEC (@SQL)
INSERT INTO @Result(ClientesAgendados)
EXEC (@SQLAGENDADOS)
这将插入2个单独的行。不知道你为什么没有sp_executesql
使用此as per your previous question。
答案 2 :(得分:0)
CREATE PROCEDURE Example
@MAESTRDESC varchar(50) --Contiene el valor a ingresar por pantalla
AS
/****Vars*****/
DECLARE
@Result TABLE
(
ClientesDisponibles int,
ClientesAgendados int
)
DECLARE
@SQL int,--Guarda la cantidad de clientes disponibles
@SQLAGENDADOS int
SELECT @SQL = COUNT(idtable) from [table]
SELECT @SQLAGENDADOS = COUNT(idtable2) from [table2]
INSERT @Result VALUES (@SQL, @SQLAGENDADOS)
SELECT
R.ClientesDisponibles,
R.ClientesAgendados
FROM
@Result R
RETURN