в чем проблема - PullRequest
       0

в чем проблема

0 голосов
/ 05 мая 2011

Я новая сделка 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

EDIT исключение говорят

Column name or number of supplied values does not match table definition.

даёт и исключение, но я понятия не имею, что я делаю неправильно. Спасибо

Ответы [ 3 ]

2 голосов
/ 05 мая 2011

Вы не можете соединить вместе несколько EXEC вызовов, подобных этому, и вам не хватает скобок (и точка Нейла тоже!)

Вы могли бы сделать

INSERT INTO @Result(ClientesDisponibles) 
EXEC (@SQL)

INSERT INTO @Result(ClientesAgendados) 
EXEC (@SQLAGENDADOS)

Это вставит 2 отдельные строки. Не знаю, почему вы не используете sp_executesql для этого в соответствии с вашим предыдущим вопросом .

2 голосов
/ 05 мая 2011

Это не сработает из-за этой строки:

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);
0 голосов
/ 05 мая 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...