json - 根据来自第一个存储过程 #1 的输入触发另一个存储过程 #1 中的存储过程 #2
问题描述
我需要创建一个存储过程,它根据第一个存储过程摄取的内容触发另一个存储过程。
我有一个名为“Data_Table”的主表,它摄取 JSON 字符串。在 JSON 字符串中是另一个 JSON 字符串,它是单独表的数据。
我的目标是:当主表根据“data_set_id”提取此数据时,它会指示嵌入在表中的 JSON 通过已设置的单独存储过程自动提取到另一个表中。例如:
CREATE PROCEDURE INSERT_DATA_TABLE_JSON (
@JsonData NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @err int
INSERT INTO Data_Table (
submission_id,
data_set_id,
data_string
)
SELECT *
FROM OPENJSON (@JsonData, N'$') WITH (
submission_id varchar(20) N'$.submission_id',
data_set_id varchar(20) N'$.data_set_id',
data_string varchar(1000) N'$.data_string'
)
SELECT @err = @@ERROR
RETURN (@err)
END
然后我将通过运行以下查询来执行此操作:
DECLARE @RC int
DECLARE @JsonData nvarchar(max)
SET @JsonData = N'[{"submission_id":"1","data_set_id":"1","data_string":"[{\"student_id\":1,\"full_name\":\"John Smith\",\"submission_id\":\"1\",\"data_set_id\":\"1\"}]"}]
for json path'
EXECUTE @RC = [dbo].[INSERT_DATA_TABLE_JSON] @JsonData
IF @RC = 0 PRINT 'OK'
ELSE PRINT 'Error'
如您所见,在 Data_Table 的“data_string”列中,我们有另一个 JSON。此 data_set_id =1 仅表示此数据与特定表相关,在本例中,我的 Student 表具有以下存储过程:
CREATE PROCEDURE INSERT_STUDENTS_JSON (
@JsonData NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @err int
INSERT INTO Students (
student_id,
full_name,
submission_id,
data_set_id
)
SELECT *
FROM OPENJSON (@JsonData, N'$') WITH (
student_id varchar(20) N'$.student_id',
full_name varchar(20) N'$.full_name',
submission_id varchar(20) N'$.submission_id',
data_set_id varchar(20) N'$.data_set_id'
)
SELECT @err = @@ERROR
RETURN (@err)
END
我如何自动允许第一个存储过程读取嵌入的 JSON 或其他内容的内容,然后让它知道它必须使用该数据来填写相应的学生表。
这是 JSON 字符串以防万一:
[{"submission_id":"1","data_set_id":"1","data_string":"[{\"student_id\":1,\"full_name\":\"John Smith\",\"submission_id\":\"1\",\"data_set_id\":\"1\"}]"}]
我有第二个名为 Lecturers 的表,我已为其分配了 data_set_id = 2,因此当嵌入式 JSON 的 data_set_id = 2 时,它会将其定向到讲师表。
解决方案
推荐阅读
- python - 从 BERT 分类器中获取 predict.proba
- javascript - 如何从 React Js 中的数组属性中删除单个对象?
- python - 缺少请求 - Pact python
- javascript - 无法从 pdf 中选择文本
- loadrunner - 在 `lr_save_string' 的参数 1 中键入错误;发现 `int' 预期的 `pointer to const char'
- python - 当我尝试上传文件时,它显示的 FieldFile 不是 JSON 可序列化的 - Django
- android - 如何在 android 的适配器视图中添加底部导航栏?
- javascript - Webpack字符串插值在html文件中不起作用
- python - 将具有列表值的 Python 字典列表转换为具有单个值的字典的平面列表
- node.js - Nodjs 语法错误意外令牌 JSON 在位置 0