Ich erstelle eine Angular- und C#-.NET-App. Ich habe ein Problem mit nicht-englischen Zeichen, die in meiner Datenbank gespeichert sind.
Das ist mein Code:
CREATE PROCEDURE [document].[CreateRegCaseCustomerDocument]
@customerId UNIQUEIDENTIFIER,
@userId UNIQUEIDENTIFIER,
@regCaseSourceId UNIQUEIDENTIFIER,
@documentInput [document].[DocumentInput_12] READONLY,
@customEntityId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
BEGIN TRY
BEGIN TRAN SaveDocument
DECLARE @regCaseId INT = (SELECT RegCaseId
FROM [regflow].[RegCase] RC
WHERE RC.RegCaseSourceId = @regCaseSourceId
AND RC.CustomEntitySourceId = @customEntityId);
IF @regCaseId IS NULL
THROW 50001, 'RegCase does not exist.', 1;
SELECT @regCaseId = RegcaseId
FROM [regflow].[regcase]
WHERE CustomerId = @customerId
AND CustomEntitySourceId = @customEntityId
AND RegCaseSourceId = @regCaseSourceId
AND IsDeleted = 0;
-- Iterate through each row in the TVP and insert documents
CREATE TABLE #DocumentRow
(
CustomerDocumentSourceId UNIQUEIDENTIFIER,
[Title] NVARCHAR(250)
);
CREATE TABLE #DocumentInput
(
[FileName] NVARCHAR(250),
[Title] NVARCHAR(250),
[Description] VARCHAR(MAX),
ContentType VARCHAR(250),
CustomerDocumentTypeSourceId UNIQUEIDENTIFIER,
Content VARBINARY(MAX),
TaskId INT,
Stage INT,
CustomerDocumentSourceId UNIQUEIDENTIFIER NULL
)
INSERT INTO #DocumentInput([FileName], [Title], [Description], ContentType, CustomerDocumentTypeSourceId, Content, TaskId, Stage)
SELECT
CAST([FileName] AS NVARCHAR(250)), CAST([Title] AS NVARCHAR(250)),
[Description], ContentType, CustomerDocumentTypeSourceId,
Content, TaskId, Stage
FROM
@documentInput
-- Insert document metadata for each document in the temp table
INSERT INTO [document].[CustomerDocumentMetadata]
(CustomerId, CustomerDocumentTypeId, [FileName], Title, [Description], ContentType, CreatedBy, UpdatedBy, CustomEntitySourceId)
OUTPUT inserted.CustomerDocumentSourceId, inserted.[Title] INTO #DocumentRow
SELECT
@customerId,
(SELECT CustomerDocumentTypeId
FROM [document].[CustomerDocumentType]
WHERE CustomerDocumentTypeSourceId = DI.CustomerDocumentTypeSourceId) AS CustomerDocumentTypeId,
DI.[FileName], DI.Title, DI.[Description], DI.ContentType,
@userId, @userId, @customEntityId
FROM
@documentInput DI;
UPDATE D
SET D.CustomerDocumentSourceId = DR.CustomerDocumentSourceId
FROM #DocumentInput D
INNER JOIN #DocumentRow DR ON DR.Title = D.Title
-- Insert the document content for each document
INSERT INTO [document].[CustomerDocumentContent] (CustomerDocumentId, Content)
SELECT
CD.CustomerDocumentId,
DI.Content
FROM
[document].[CustomerDocumentMetadata] CD
INNER JOIN
#DocumentInput DI ON DI.CustomerDocumentSourceId = CD.CustomerDocumentSourceId
WHERE
CD.CustomerId = @customerId
AND CD.CustomEntitySourceId = @customEntityId
AND CD.IsDeleted = 0
-- Insert relationships into the RegCaseRel table
INSERT INTO [document].[CustomerDocumentRegCaseRel]
(RegCaseId, TaskId, Stage, CustomerDocumentId, CreatedBy, UpdatedBy)
SELECT
@regCaseId,
DI.TaskId, DI.Stage,
CD.CustomerDocumentId,
@userId, @userId
FROM
[document].[CustomerDocumentMetadata] CD
INNER JOIN
#DocumentInput DI ON DI.CustomerDocumentSourceId = CD.CustomerDocumentSourceId
WHERE
CD.CustomerId = @customerId
AND CD.CustomEntitySourceId = @customEntityId
AND CD.IsDeleted = 0
CREATE TYPE [document].[DocumentInput_12] AS TABLE
(
[FileName] NVARCHAR(250),
[Title] NVARCHAR(250),
[Description] VARCHAR(MAX),
ContentType VARCHAR(250),
CustomerDocumentTypeSourceId UNIQUEIDENTIFIER,
Content VARBINARY(MAX),
TaskId INT,
Stage INT
)
In der API-Anfrage habe ich „Щодо+внесення+змін+до+“ als Dateinamen verwendet. Titel und Dateiname werden weiterhin als „????“ in der SQL Server-Datenbanktabelle gespeichert. Ich brauche dabei Ihre Unterstützung.
Ich erstelle eine Angular- und C#-.NET-App. Ich habe ein Problem mit nicht-englischen Zeichen, die in meiner Datenbank gespeichert sind. Das ist mein Code: [code]public async Task CreateRegCaseCustomerDocumentAsync(string title, string description, string fileName, string contentType, byte[] content, Guid regCaseSourceId, Guid customerDocumentTypeSourceId, int? taskId = null, int? stage = null) { var query = "[document].[CreateRegCaseCustomerDocument]";
var parameters = new DynamicParameters(new { _currentUser.CustomerId, _currentUser.UserId, regCaseSourceId, documentInput = documentTable.AsTableValuedParameter("[document].[DocumentInput_12]"), _currentUser.CustomEntityId });
var result = await _dataAccessService.ExecuteScalarAsync( DataSource.Customer, query, parameters, CommandType.StoredProcedure);
return result; } [/code] Und in meiner gespeicherten Prozedur habe ich NVARCHAR nur für Titel und Dateinamen verwendet: [code]CREATE PROCEDURE [document].[CreateRegCaseCustomerDocument] @customerId UNIQUEIDENTIFIER, @userId UNIQUEIDENTIFIER, @regCaseSourceId UNIQUEIDENTIFIER, @documentInput [document].[DocumentInput_12] READONLY, @customEntityId UNIQUEIDENTIFIER AS BEGIN SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
BEGIN TRY
BEGIN TRAN SaveDocument
DECLARE @regCaseId INT = (SELECT RegCaseId FROM [regflow].[RegCase] RC WHERE RC.RegCaseSourceId = @regCaseSourceId AND RC.CustomEntitySourceId = @customEntityId);
IF @regCaseId IS NULL THROW 50001, 'RegCase does not exist.', 1;
SELECT @regCaseId = RegcaseId FROM [regflow].[regcase] WHERE CustomerId = @customerId AND CustomEntitySourceId = @customEntityId AND RegCaseSourceId = @regCaseSourceId AND IsDeleted = 0;
-- Iterate through each row in the TVP and insert documents CREATE TABLE #DocumentRow ( CustomerDocumentSourceId UNIQUEIDENTIFIER, [Title] NVARCHAR(250) );
INSERT INTO #DocumentInput([FileName], [Title], [Description], ContentType, CustomerDocumentTypeSourceId, Content, TaskId, Stage) SELECT CAST([FileName] AS NVARCHAR(250)), CAST([Title] AS NVARCHAR(250)), [Description], ContentType, CustomerDocumentTypeSourceId, Content, TaskId, Stage FROM @documentInput
-- Insert document metadata for each document in the temp table INSERT INTO [document].[CustomerDocumentMetadata] (CustomerId, CustomerDocumentTypeId, [FileName], Title, [Description], ContentType, CreatedBy, UpdatedBy, CustomEntitySourceId) OUTPUT inserted.CustomerDocumentSourceId, inserted.[Title] INTO #DocumentRow SELECT @customerId, (SELECT CustomerDocumentTypeId FROM [document].[CustomerDocumentType] WHERE CustomerDocumentTypeSourceId = DI.CustomerDocumentTypeSourceId) AS CustomerDocumentTypeId, DI.[FileName], DI.Title, DI.[Description], DI.ContentType, @userId, @userId, @customEntityId FROM @documentInput DI;
UPDATE D SET D.CustomerDocumentSourceId = DR.CustomerDocumentSourceId FROM #DocumentInput D INNER JOIN #DocumentRow DR ON DR.Title = D.Title
-- Insert the document content for each document INSERT INTO [document].[CustomerDocumentContent] (CustomerDocumentId, Content) SELECT CD.CustomerDocumentId, DI.Content FROM [document].[CustomerDocumentMetadata] CD INNER JOIN #DocumentInput DI ON DI.CustomerDocumentSourceId = CD.CustomerDocumentSourceId WHERE CD.CustomerId = @customerId AND CD.CustomEntitySourceId = @customEntityId AND CD.IsDeleted = 0
-- Insert relationships into the RegCaseRel table INSERT INTO [document].[CustomerDocumentRegCaseRel] (RegCaseId, TaskId, Stage, CustomerDocumentId, CreatedBy, UpdatedBy) SELECT @regCaseId, DI.TaskId, DI.Stage, CD.CustomerDocumentId, @userId, @userId FROM [document].[CustomerDocumentMetadata] CD INNER JOIN #DocumentInput DI ON DI.CustomerDocumentSourceId = CD.CustomerDocumentSourceId WHERE CD.CustomerId = @customerId AND CD.CustomEntitySourceId = @customEntityId AND CD.IsDeleted = 0 [/code] [code][document].[DocumentInput_12][/code] Typ: [code]CREATE TYPE [document].[DocumentInput_12] AS TABLE ( [FileName] NVARCHAR(250), [Title] NVARCHAR(250), [Description] VARCHAR(MAX), ContentType VARCHAR(250), CustomerDocumentTypeSourceId UNIQUEIDENTIFIER, Content VARBINARY(MAX), TaskId INT, Stage INT ) [/code] In der API-Anfrage habe ich „Щодо+внесення+змін+до+“ als Dateinamen verwendet. Titel und Dateiname werden weiterhin als „????“ in der SQL Server-Datenbanktabelle gespeichert. Ich brauche dabei Ihre Unterstützung.
public function up(): void
{
Schema::create('books', function (Blueprint $table) {
$table->id();
$table->string('book_name');
$table->string('author');
$table->integer('page_count');...
In meiner Datenbank habe ich eine Tabelle:
CREATE TABLE .
(
INT NOT NULL IDENTITY(1, 1),
NVARCHAR(100) NOT NULL,
NVARCHAR(100) NOT NULL,
NVARCHAR(max) NOT NULL,
Ich wusste nicht, was daran schief gelaufen ist? Meine Abfrage lief zuvor einwandfrei. Plötzlich wird ein MSDASQL -Fehler angezeigt.ALTER PROCEDURE .
AS
BEGIN
SET NOCOUNT ON;
Ich habe zwei Tabellen mit einer ähnlichen Struktur in SQL Server und MySQL
Ich verlinke auch erfolgreich sowohl SQL Server als auch MySQL
Ich habe versucht, auszuwählen und auszuwählen und In SQL...