我有一段时间试图将FLOAT(53)字段转换VARCHAR为没有尾随零或科学记数法的字段。
该字段可能有一个非常大或非常小的数字。我需要将其转换为 VARCHAR 并最多显示小数点后 5 位但没有尾随零。所以 123.456789 应该是 123.45678,123456.78 应该是 123456.78。
我有一个 SQL Fiddle 显示我尝试过的内容:http ://sqlfiddle.com/#!6/bd392/4
我有一个包含一些动态 SQL 的存储过程。我正在尝试使用执行存储过程,OPENROWSET但出现错误:
消息 11514,级别 16,状态 1,过程 sp_describe_first_result_set,第 1 行
无法确定元数据,因为语句 'EXEC sp_executesql @SQL, N'@row_count_out INT OUTPUT', @row_count_out = @row_count_table OUTPUT;' 在过程 'nachoTest' 中包含动态 SQL。考虑使用 WITH RESULT SETS 子句来显式描述结果集。
我真正的存储过程有点复杂,但这是错误的一个工作示例:
存储过程:
CREATE PROCEDURE nachoTest @table_name NVARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @row_count_table INT
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT @row_count_out = COUNT(*) FROM ' + @table_name
EXEC sp_executesql @SQL, N'@row_count_out INT OUTPUT', @row_count_out = @row_count_table OUTPUT;
SELECT @row_count_table AS row_count, @table_name AS table_name
END
GO
Run Code Online (Sandbox Code Playgroud)
调用它 …
sql-server stored-procedures dynamic-sql openrowset sql-server-2014