我必须从 SQL Server 数据库创建每个存储过程的副本并存储在某个物理位置。我知道使用“生成脚本”我们可以将所有存储过程导出到单个“.sql”文件中,但我不想那样做。我需要在某个位置按名称存储每个存储过程的单独副本。我必须为此编写批处理脚本吗?
我有返回不同表结果的动态查询。结果可以具有不同数量的列和不同的列名称。
EXEC SP_EXECUTESQL @Query,N'@parameter nvarchar(19)',@parameter=@parameter
Run Code Online (Sandbox Code Playgroud)
我可以通过使用检索存储过程的列定义
exec sp_describe_first_result_set N''
Run Code Online (Sandbox Code Playgroud)
但是我如何检索列定义或仅从中获取列名称sp_executesql?
我有一个关于 SQL Server 的问题:如何使用几列获取 json 格式并获取列?
表:雇员
id | name | sal | depno
----+------+-----+------
1 | a | 100 | 10
2 | b | 200 | 20
Run Code Online (Sandbox Code Playgroud)
根据这些数据,我想要这样的输出:
id | name | sal | deptno | empjsonstring
----+------+------+--------+-------------------------------------------
1 | a | 100 | 10 | {"id":1,"name":"a","sal":100,"deptno":10}
2 | b | 200 | 20 | {"id":2,"name":"b","sal"200,"deptno":20}
Run Code Online (Sandbox Code Playgroud)
我尝试过这个查询:
select *
from emp
for json path, include_null_values, without_array_wrapper
Run Code Online (Sandbox Code Playgroud)
但这并没有返回预期的结果。
您能告诉我如何在 SQL Server 中编写查询来完成此任务吗?
我使用此Query将数据转换为JSON
SELECT*FROM tbl_subject FOR JSON AUTO
当我点击响应它打开为XML文件
如何将此xml更改为nvarchar数据类型
是否可以使用SQL函数获取排序变量的最后一个值FIRST_VALUE?这是获取最后一个值的方法.
select
[MyVal_Last] = FIRST_VALUE([MyValue]) OVER (PARTITION BY [Category] ORDER BY [MyValue] DESC)
from tbl
Run Code Online (Sandbox Code Playgroud)
是否可以修改它以获得倒数第二个值?
更新.我熟悉不同的方法来获得最后但提到的一个值,即这里的答案是旧的,并且已经长了很长的胡须.我想知道新版本的SQL Server是否可以使用新功能以更优雅的方式完成它.
嘿所有我试图输出数据如果@blah等于是,但如果不是则输出'否'.
这是我目前的查询:
DECLARE @blah VARCHAR(MAX)
SET @blah = (SELECT
CASE WHEN
COUNT(email) = '1' THEN 'Yes'
ELSE 'No'
END
FROM
usersTbl
WHERE
email = 'someone@somewhere.com');
SELECT
CASE WHEN
@blah = 'Yes' THEN
(SELECT *
FROM
usersTbl
WHERE
email = 'someone@somewhere.com')
ELSE 'No'
END
FROM
usersTbl;
Run Code Online (Sandbox Code Playgroud)
目前我得到的错误是:
当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式.
我错过了什么?
我需要返回以逗号分隔的字符串发送到存储过程的记录 - 如下所示:
@PMID = 29573145,24106086,20513766,24326307
Run Code Online (Sandbox Code Playgroud)
我有一个存储过程来拉取记录,如
SELECT
data,
PMID
FROM
[dbo].[ADMIN_Publication_JSON]
WHERE
PMID IN (SELECT DATA FROM dbo.Split(@PMID, ','))
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是返回记录集是随机的,我需要它是精确的,因为我的最终用户可以更改顺序,并且记录需要按顺序显示,这将改变逗号字符串中的顺序.这是可能的还是我需要完全改变我提取数据的方式?谢谢
sql sql-server stored-procedures sql-server-2014 sql-server-2016
假设我有一个Name, Date, StoredProcedure在SQL Server 2016 中有列的表
我需要查询此表并循环遍历存储过程列并检查数据库中是否存在此存储过程.如果它不存在,那么我需要仅为存储过程列使该行为null.
这是我尝试过但它不起作用
Select m1.StoredProcedure
from MyTable m1
where
IF NOT EXISTS (SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'StoredProcedure')
AND type IN (N'P', N'PC'))
Then Update MyTable m2
Set StoredProcedure = ''
Where m2 StoredProcedure = m1.StoredProcedure
Run Code Online (Sandbox Code Playgroud) 输出窗口填充'?' 分数.
select ('??? ???????? ??????') as test
Run Code Online (Sandbox Code Playgroud)
我想在输出窗口中使用完全相同的文本.我正在使用SQL Server 2016.
我有以下SQL表
user_id product_1 product_2 product_3
123 Scissors Stone Paper
Run Code Online (Sandbox Code Playgroud)
我编写了此代码以将结果格式化为JSON,但无法以所需的格式获取它。如果我将所有产品列都命名为namesql则返回错误
Use different names and aliases for each column in SELECT list.
SQL代码:
select
product1 as 'Product1',
product2 as 'Product2',
product3 as 'Product3'
from Recommendations
where user_id = '123'
FOR JSON PATH, ROOT('Offers')
Run Code Online (Sandbox Code Playgroud)
电流输出:
{"offers":[
{"Product1": "Scissors", "Product2": "Stone", "Product3": "Paper"}
]
}
Run Code Online (Sandbox Code Playgroud)
所需的输出:
{"offers":[
{"name": "Scissors"},
{"name": "Stone"},
{"name": "Paper"}
]
}
Run Code Online (Sandbox Code Playgroud) sql-server-2016 ×10
sql-server ×8
sql ×7
json ×3
t-sql ×3
batch-file ×1
database ×1
function ×1