【问题标题】:Logic App to call Azure SQL stored procedure passing datetime param逻辑应用调用 Azure SQL 存储过程传递日期时间参数
【发布时间】:2022-01-06 14:53:27
【问题描述】:

我在 Azure SQL 数据库中有一个简单的存储过程,它采用 datetime 类型的单个参数:

CREATE PROCEDURE [dbo].[DeleteLogRecs]
    (@pSinceBefore datetime)

我想从一个 Azure 逻辑应用程序调用它,传递一个现在 -3 天的日期值,所以我有以下操作:

"Execute_stored_procedure_(V2)": {
                "inputs": {
                    "body": {
                        "pSinceBefore": "@{convertFromUtc(addDays(utcNow(),-3),'GMT Standard Time')}"
                    },
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['sqldw']['connectionId']"
                        }
                    },

我的问题是,我收到以下错误:

“状态”:400,
"message": "将数据类型 nvarchar 转换为 datetime 时出错。\r\nclientRequestId: dbbd2502-899f-4812-a942-4c11bbed4c1b",
“错误”:{
"message": "将数据类型 nvarchar 转换为 datetime 时出错。"

谁能看出我哪里出错了?

【问题讨论】:

  • 您输入的 nvarchar 是来自逻辑应用程序吗?尝试将其更改为日期时间
  • 你的值精确到1/1000000秒,datetime只精确到1/300秒;它不会接受这样的字符串值,因为它无法存储它。也许您应该使用datetime2(7)

标签: sql-server azure-sql-database azure-logic-apps


【解决方案1】:

我已经设法通过将存储过程参数的类型更改为字符串并使用逻辑应用中的以下格式来解决这个问题:

"Execute_stored_procedure_(V2)": {
                "inputs": {
                    "body": {
                        "pSinceBefore": "@{formatDateTime(addDays(utcNow(),-3),'yyyy-MM-dd HH:mm:ss')}"
                    },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2020-03-26
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多