mysql - 带有表变量和返回值输出的动态 SQL

标签 mysql sql-server tsql stored-procedures

查询时遇到困难。做了一些更改,但无法使其工作。

这些过程本身作为查询工作,但在另一个过程中调用时不起作用;因为我在调试时看不到填充的变量值

任何帮助值得赞赏吗?

            Exec dbo.usr_GetLastDate @TableName, @LastTransDate
            EXEC dbo.usr_GetRecCount @TableName, @RecCount

ALTER PROCEDURE [dbo].[usr_GetLastDate]
    -- Add the parameters for the stored procedure here
    @TableName SYSNAME,
    @OUTDATE date Output
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
   DECLARE @SQLCommand NVARCHAR(MAX) = 
        N'SELECT @OUTDATE=MAX(TRANSDATE) FROM ' + QUOTENAME(@TableName);

   EXECUTE [dbo].[sp_executesql] 
             @sqlCommand, N'@OUTDATE DATE OUTPUT', @OUTDATE=@OUTDATE OUTPUT;

END

ALTER PROCEDURE [dbo].[usr_GetRecCount]
    -- Add the parameters for the stored procedure here
    @TableName SYSNAME,
    @OUTINT int output

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
   DECLARE @SQLCommand NVARCHAR(MAX) = 
        N'SELECT @OUTINT=COUNT(SYMBOL) FROM ' + QUOTENAME(@TableName);


   EXECUTE [dbo].[sp_executesql] 
             @sqlCommand, N'@OUTINT INT OUTPUT', @OUTINT=@OUTINT OUTPUT;
END

最佳答案

如果您使用的是 Visual Studio 您可以在“变量”窗口中看到所有变量值。表达式只有在具有作用域时才会显示值,但有时它们的行为方式与我们想要的不同。

所以我的建议是你应该使用“变量”窗口来查看所有变量及其值。

关于mysql - 带有表变量和返回值输出的动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324325/

相关文章:

mysql - 根据 If 语句选择自定义列

mysql - 使用 ssh 在 VPS 上安装 Wordpress

c# - MySQL Reader 立即关闭

mysql - 在 SQL 中连接多个表

sql - 本地 TSV 文件写入 SQL 表

sql - 将行透视到返回值超过 1 个的列

sql - 具有不同的 Order by 子句

mysql - mariadb中的json路径

mysql - 使用 SQL 聚合文本数据

sql-server - 帮助选择要选择的 SQL Server 2008 横向扩展解决方案(复制,...)