关键词:
【中文标题】在 SQL Server 存储过程中将 varchar 转换为 int 时出错【英文标题】:Error converting varchar to int in SQL Server stored procedure 【发布时间】:2013-10-31 14:22:05 【问题描述】:以下是我的存储过程。我收到一个错误,但我不明白到底是什么问题
CREATE Proc [dbo].[sp_Product_details_for_Productcategory_as_per_productcategoryID]
@ProductCategoryId int,
@PageIndex INT
,@PageSize INT
,@PageCount INT OUTPUT
,@ProductSearch nvarchar(Max)
as
BEGIN
declare @Criteria varchar(4000)
set @Criteria = (select replace(@ProductSearch,'(','('''))
set @Criteria = (select REPLACE(@Criteria,',',''','''))
set @Criteria = (select REPLACE(@Criteria,')',''')'))
declare @sql int
SET NOCOUNT ON;
select @sql = ' SELECT ROW_NUMBER() OVER
(
ORDER BY PM.ProductMainPkId ASC
)AS RowNumber ,
PM.ProductMainPkId ProductMainPkId
,PM.Title,
PS.ProductSubCategory ProductSubCategory,
PM.ProductSubCategoryFkId ,
PP.MarketValue,
PP.DiscountPrice,
PID.Path1Thumb
INTO #Results
from ProductMain_Details PM
Left join ProductPrice_Details PP on PM.ProductMainPkId = PP.ProductMain_FkId
Left join ProductImage_Details PID on PM.ProductMainPkId = PID.ProductMain_FkId
Left Join ProductSubCategory_Master PS on PM.ProductSubCategoryFkId = PS.ProductSubCategoryPkId
where
--PS.ProductSubCategorypkId = 216
PS.ProductSubCategorypkId = '+ CAST((@ProductCategoryId) as varchar(5) ) +' and
PM.Active = 1
and PM.Deleted = 0'
+@Criteria+'
DECLARE @RecordCount INT
SELECT @RecordCount = COUNT(*) FROM #Results
SET @PageCount = CEILING(CAST(@RecordCount AS DECIMAL(10, 2)) / CAST(@PageSize AS DECIMAL(10, 2)))
PRINT @PageCount
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results'
EXEC (@sql)
-- SET NOCOUNT ON;
-- SELECT ROW_NUMBER() OVER
-- (
-- ORDER BY PM.ProductMainPkId ASC
-- )AS RowNumber ,
-- PM.ProductMainPkId ProductMainPkId
-- ,PM.Title,
-- PS.ProductSubCategory ProductSubCategory,
-- PM.ProductSubCategoryFkId ,
-- PP.MarketValue,
-- PP.DiscountPrice,
-- PID.Path1Thumb
-- INTO #Results
-- from ProductMain_Details PM
-- Left join ProductPrice_Details PP on PM.ProductMainPkId = PP.ProductMain_FkId
-- Left join ProductImage_Details PID on PM.ProductMainPkId = PID.ProductMain_FkId
-- Left Join ProductSubCategory_Master PS on PM.ProductSubCategoryFkId = PS.ProductSubCategoryPkId
--where
----PS.ProductSubCategorypkId = 216
--PS.ProductSubCategorypkId = @ProductCategoryId and
--PM.Active = 1
-- and PM.Deleted = 0
-- DECLARE @RecordCount INT
-- SELECT @RecordCount = COUNT(*) FROM #Results
-- SET @PageCount = CEILING(CAST(@RecordCount AS DECIMAL(10, 2)) / CAST(@PageSize AS DECIMAL(10, 2)))
-- PRINT @PageCount
-- SELECT * FROM #Results
-- WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
-- DROP TABLE #Results
END
错误:
消息 245,级别 16,状态 1,过程 sp_Product_details_for_Productcategory_as_per_productcategoryID,第 21 行 转换 varchar 值时转换失败 'SELECT ROW_NUMBER() OVER ( 由 PM.ProductMainPkId ASC 订购 )AS 行号 , PM.ProductMainPkId ProductMainPkId ,PM.Title, PS.ProductSubCategory ProductSubCategory, PM.ProductSubCategoryFkId , PP.MarketValue, PP.DiscountPrice, PID.Path1Thumb
INTO #Results
from ProductMain_Details PM
Left join ProductPrice_Details PP on PM.ProductMainPkId = PP.ProductMain_FkId
Left join ProductImage_Details PID on PM.ProductMainPkId = PID.ProductMain_FkId
Left Join ProductSubCategory_Master PS on PM.ProductSubCategoryFkId = PS.ProductSubCategoryPkId
where
--PS.ProductSubCategorypkId = 216
PS.ProductSubCategorypkId = 1 and
PM.Active = 1
and PM.Deleted = 0
DECLARE @RecordCount INT
SELECT @RecordCount = COUNT(*) FROM #Results
SET @PageCount = CEILING(CAST(@RecordCount AS DECIMAL(10, 2)) / CAST(@PageSize AS DECIMAL(10, 2)))
PRINT @PageCount
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results' to data type int.
【问题讨论】:
【参考方案1】:您将@sql
变量声明为INT
,而它应该是合适大小的(n)varchar,例如varchar(max)
或nvarchar(max)
,因为您需要该变量来保存您传递给@ 的字符串987654325@.
declare @sql int
应该是
declare @sql varchar(max)
【讨论】:
在 SQL Server 存储过程中将 varchar 转换为 int 时出错
】在SQLServer存储过程中将varchar转换为int时出错【英文标题】:ErrorconvertingvarchartointinSQLServerstoredprocedure【发布时间】:2013-10-3114:22:05【问题描述】:以下是我的存储过程。我收到一个错误,但我不明白到底是什么问题CREATEProc[dbo]... 查看详情
在 SQL Server 存储过程中查找表名的列名作为保留关键字
】在SQLServer存储过程中查找表名的列名作为保留关键字【英文标题】:FindColumnNamesorTableNamesasreservedkeywordinSQLServerstoredprocedure【发布时间】:2016-07-0512:47:41【问题描述】:我的数据库中有大量存储过程。所有这些都旨在返回结果... 查看详情
如何在 sql server 2008 中将日期与 GETDATE() 进行比较
】如何在sqlserver2008中将日期与GETDATE()进行比较【英文标题】:howtocomparedatewithGETDATE()insqlserver2008【发布时间】:2018-05-2208:06:41【问题描述】:我有一个存储过程,用于将某种信息插入到表\'demotable\'中,因为我有一个字段loginTime... 查看详情
在 SSIS 中执行 SQL 任务中将表类型输入参数传递给存储过程
】在SSIS中执行SQL任务中将表类型输入参数传递给存储过程【英文标题】:PassingTableTypeInputParameterToStoredProcedureinExecuteSQLTaskinSSIS【发布时间】:2016-05-1314:01:38【问题描述】:我正在尝试从SSIS中的执行SQL任务调用存储过程。存储过... 查看详情
在 PL/SQL 存储过程中将表作为参数传递
】在PL/SQL存储过程中将表作为参数传递【英文标题】:PasstableasparameterinPL/SQLstoredprocedure【发布时间】:2016-12-0616:10:44【问题描述】:请原谅任何措辞不佳的问题,因为我对PL/SQL和Oracle的经验很少。但是,我目前不知道如何将表... 查看详情
如何在 sql server 2008r2 中将行名更改为列名
】如何在sqlserver2008r2中将行名更改为列名【英文标题】:HowtochangeRownameintoColumnnameinsqlserver2008r2【发布时间】:2018-10-2209:40:54【问题描述】:我在asp.net中使用存储过程作为绑定制作XtraCharts线图(XY图)时遇到了麻烦。我想通过R250... 查看详情
VBScript - 在 SQL Server 中将 SHA1 存储为数字或二进制值
】VBScript-在SQLServer中将SHA1存储为数字或二进制值【英文标题】:VBScript-StoringSHA1asNumericorBinaryValueinSQLServer【发布时间】:2011-04-2016:20:36【问题描述】:我目前在SQLServer中将我的SHA1值存储为char(40)。我的印象是,我可以通过将此字... 查看详情
在 Oracle SQL 错误中将日期传递给存储过程:ORA-01858
】在OracleSQL错误中将日期传递给存储过程:ORA-01858【英文标题】:PassingdatetoStoredProcedureinOracleSQLerror:ORA-01858【发布时间】:2020-09-1708:41:33【问题描述】:我知道这个问题之前已经回答过了,我已经尝试了其中给出的解决方案,但... 查看详情
在 PL/SQL 存储过程中将多个变量传递给 WHERE 条件
】在PL/SQL存储过程中将多个变量传递给WHERE条件【英文标题】:PassingmultiplevariablesintoWHEREconditioninPL/SQLStoredProcedure【发布时间】:2012-07-0312:32:15【问题描述】:在传递参数时执行此代码块时出现问题。参数rf是要输入到WHERE子句中... 查看详情
如何在 SQL Server 中检查调用存储过程
】如何在SQLServer中检查调用存储过程【英文标题】:HowtoCheckthecallingstoredprocedureinSQLServer【发布时间】:2021-01-0316:30:18【问题描述】:我有一个存储过程名称示例“mySp”,我想知道谁调用了这个存储过程,我的意思是这个存储过... 查看详情
如果存储过程失败,则在执行 SQL 任务中将输出变量值获取到 ssis 变量中
】如果存储过程失败,则在执行SQL任务中将输出变量值获取到ssis变量中【英文标题】:IfstoredprocedurefailedthenGetoutputvariablesvaluesintossisvariablesinExecuteSQLTask【发布时间】:2020-07-2914:11:24【问题描述】:我正在尝试从SP获取输出消息到... 查看详情
如何在 SQL Server 数据库中将 Azure 存储用于 elmah 日志而不是 elmah 日志
】如何在SQLServer数据库中将Azure存储用于elmah日志而不是elmah日志【英文标题】:HowtouseAzurestorageforelmahlogsinsteadofelmahlogsinSQLServerdatabase【发布时间】:2018-12-1908:57:50【问题描述】:目前在我的项目中,我在SQLServer的单独表中使用elm... 查看详情
如何在 SQL Developer 中执行 SQL Server 存储过程?
】如何在SQLDeveloper中执行SQLServer存储过程?【英文标题】:HowtoExecuteSQLServerStoredProcedureinSQLDeveloper?【发布时间】:2011-05-0709:56:15【问题描述】:我获得了一个SQLServer数据库的用户帐户,该用户帐户仅具有执行存储过程的权限。我... 查看详情
如何在sql server的另一个存储过程中执行存储过程
】如何在sqlserver的另一个存储过程中执行存储过程【英文标题】:Howtoexecutestoredprocedureinanotherstoredprocedureinsqlserver【发布时间】:2013-04-2509:27:04【问题描述】:我正在使用sqlserver2008。我有一个存储过程,我正在其中执行另一个usp... 查看详情
在存储过程 sql server 2005 中使用函数调用?
】在存储过程sqlserver2005中使用函数调用?【英文标题】:Useoffunctioncallsinstoredproceduresqlserver2005?【发布时间】:2011-09-2119:25:34【问题描述】:在存储过程的where子句中使用函数调用会降低sqlserver2005的性能?SELECT*FROMMemberMWHERELOWER(db... 查看详情
在 SQL Server 上查询存储过程的内容
】在SQLServer上查询存储过程的内容【英文标题】:QuerythecontentsofstoredproceduresonSQLServer【发布时间】:2011-12-0222:36:40【问题描述】:我正在探索一个遗留数据库系统,但对其内部结构知之甚少。我想找到调用另一个存储过程A的所... 查看详情
如何使用 SQL Server 将存储过程的结果存储在变量中
】如何使用SQLServer将存储过程的结果存储在变量中【英文标题】:HowtostoreresultofstoredprocedureinavariableusingSQLServer【发布时间】:2015-07-1507:08:50【问题描述】:我正在处理SQL查询,我必须将存储过程的结果存储到字符串类型变量中... 查看详情
如何在 Microsoft SQL Server 2017 上调试存储过程?
】如何在MicrosoftSQLServer2017上调试存储过程?【英文标题】:HowtodebugstoredprocedureonMicrosoftSQLServer2017?【发布时间】:2019-05-0421:19:12【问题描述】:我需要使用存储在此服务器中的数据在本地SQLServer上调试存储过程。我的设备上有:... 查看详情