Sql server 2005 问题在哪里

Sql server 2005 问题在哪里,sql-server-2005,tsql,stored-procedures,Sql Server 2005,Tsql,Stored Procedures,我有一个新的transact-sql我有这个想法 CREATE PROCEDURE Example @MAESTRDESC varchar(50) --Contiene el valor a ingresar por pantalla AS /****Vars*****/ DECLARE @Result TABLE ( ClientesDisponibles int, ClientesAgendados int ) DECLA

我有一个新的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
编辑 例外情况是

提供的值的列名或数目与表定义不匹配


给予和例外,但我不知道我做错了什么。谢谢

因为这一行,它无法工作:

声明@sqlint

您需要将@SQL声明为VARCHAR,以便将其用作字符串。@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);

因为这一行,它无法工作:

声明@sqlint

您需要将@SQL声明为VARCHAR,以便将其用作字符串。@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);

你不能像那样将多个EXEC调用链接在一起,你也缺少了括号和尼尔的观点

你可以

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

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

这将插入两个单独的行。不知道您为什么不使用sp_executesql来完成此任务。

您无法将多个这样的EXEC调用链接在一起,而且您也缺少括号和Neil的要点

你可以

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

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


这将插入两个单独的行。不知道为什么不使用sp_executesql进行此操作。

这里有一个可以肯定的问题:您将@SQL声明为INT,但试图将其设置为字符串。@Joe Stefanelli很抱歉,我发布了一个问题,我已经编辑过了。您应该使用动态SQL作为最后手段,而不是第一次尝试。在这方面根本不需要动态sql。请阅读下面的链接,不要再考虑编写任何动态SQL,直到你真正理解它:这里有一个肯定:你把@ SQL声明为int,但是,尝试将其设置为字符串。@Joe Stefanelli很抱歉,我发布了一个问题“我已经编辑好了”。您应该使用动态SQl作为最后手段,而不是第一次尝试。在这方面根本不需要动态sql。请阅读下面的链接,不要再考虑编写任何动态SQL,直到你真正理解它:这不是问题,这是一个问题发布的问题,但我确定这不是问题,这是一个问题张贴问题,但我fixed@Martin我不能在我工作的公司外使用其他存储程序,其他一些东西可以使插入在同一行中??谢谢你问我真的helpful@Jorge-这需要是动态SQL吗?如果是这样,您可以将两个动态SQL脚本组合成一个脚本吗?从表中选择SELECT CountId table,从中选择CountId Table2table2@Martin不幸的是,它必须是一个动态查询,但我不知道如何将两者结合起来queries@Jorge-如果它们都返回一个值,并且是一条语句,那么您只需执行SELECT query1,query2否则,您可以在组合的动态SQL脚本中分配变量,并在最后选择@VAR1、@VAR2。@Martin终于明白您的意思了,我解决了mi问题,谢谢您的帮助time@Martin我不能在我工作的公司外使用其他存储程序,其他一些东西可以使插入在同一行中??谢谢你问我真的helpful@Jorge-这需要是动态SQL吗?如果是这样,您可以将两个动态SQL脚本组合成一个脚本吗?从表中选择SELECT CountId table,从中选择CountId Table2table2@Martin不幸的是,它必须是一个动态查询,但我不知道如何将两者结合起来queries@Jorge-如果它们都返回一个值,并且是一条语句,那么您只需执行SELECT query1,查询2否则,您可以只在组合的动态SQL脚本中分配变量,并在最后选择@VAR1、@VAR2。@Martin终于明白您的意思了,我解决了mi问题,谢谢您的时间